{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"main.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true,"mount_file_id":"11dew2RcsQajbDxeCdP1r61KHPA1suKrK","authorship_tag":"ABX9TyMmhcfa5uHqQjJTBgrRif+s"},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"id":"m27y7vHNABRw","executionInfo":{"status":"ok","timestamp":1603560785627,"user_tz":-330,"elapsed":2174,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}}},"source":["import numpy as np\n","import pandas as pd\n","import matplotlib.pyplot as plt\n","%matplotlib inline\n","plt.style.use('seaborn-whitegrid')\n","\n","import seaborn as sns\n","from sklearn.model_selection import train_test_split, StratifiedKFold\n","from sklearn.metrics import accuracy_score, f1_score\n","from sklearn.model_selection import KFold\n","\n","from sklearn.tree import DecisionTreeRegressor\n","from sklearn.ensemble import RandomForestRegressor\n","from sklearn.preprocessing import StandardScaler\n","\n","from sklearn.linear_model import LinearRegression, ElasticNet\n","\n","from lightgbm import LGBMRegressor\n","#!pip install catboost\n","#from catboost import CatBoostRegressor\n","from xgboost import XGBRegressor\n","\n","from IPython.core.interactiveshell import InteractiveShell\n","InteractiveShell.ast_node_interactivity = \"all\"\n","\n","import warnings\n","warnings.simplefilter('ignore')"],"execution_count":1,"outputs":[]},{"cell_type":"code","metadata":{"id":"gkc9YjUQANkO","executionInfo":{"status":"ok","timestamp":1603560795071,"user_tz":-330,"elapsed":5798,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}}},"source":["train = pd.read_csv('/content/drive/My Drive/Machine_Hack/House Price Prediction Challenge/Train.csv')\n","test = pd.read_csv('/content/drive/My Drive/Machine_Hack/House Price Prediction Challenge/Test.csv')\n","sam_sub = pd.read_csv('/content/drive/My Drive/Machine_Hack/House Price Prediction Challenge/sample_submission.csv')"],"execution_count":2,"outputs":[]},{"cell_type":"code","metadata":{"id":"k62__8RppRwR","executionInfo":{"status":"ok","timestamp":1603560795078,"user_tz":-330,"elapsed":3896,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}}},"source":["TARGET_COL = 'TARGET(PRICE_IN_LACS)'\n","num_col = ['SQUARE_FT', 'LONGITUDE', 'LATITUDE']\n","cat_col = ['POSTED_BY', 'BHK_OR_RK']\n","num_cat_col = ['UNDER_CONSTRUCTION', 'RERA', 'BHK_NO.', 'READY_TO_MOVE', 'RESALE']\n","text_col = ['ADDRESS']\n"],"execution_count":3,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"hfv1y1VSn9fO"},"source":["## 1. Concating/Joining train and test datasets."]},{"cell_type":"code","metadata":{"id":"LHYYhqsnoAt7","executionInfo":{"status":"ok","timestamp":1603350080822,"user_tz":-330,"elapsed":971,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"6875bcbe-bad4-44a8-f9c1-de06b755592b","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["train.shape, test.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((29451, 12), (68720, 11))"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"code","metadata":{"id":"z_XEPGsboXAc","executionInfo":{"status":"ok","timestamp":1603350084720,"user_tz":-330,"elapsed":2183,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"29165560-55c9-42fc-8e83-256c2ec0527a","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["df = pd.concat([train,test], axis=0).reset_index(drop=True)\n","df.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(98171, 12)"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"code","metadata":{"id":"X5-tOoXoozMf","executionInfo":{"status":"ok","timestamp":1603350085406,"user_tz":-330,"elapsed":998,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"b4e676a6-d6bf-438b-dd19-1695c889f158","colab":{"base_uri":"https://localhost:8080/","height":275}},"source":["df.head()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>POSTED_BY</th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>BHK_OR_RK</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>Owner</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>BHK</td>\n","      <td>1300.236407</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Ksfc Layout,Bangalore</td>\n","      <td>12.969910</td>\n","      <td>77.597960</td>\n","      <td>55.0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>Dealer</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>BHK</td>\n","      <td>1275.000000</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Vishweshwara Nagar,Mysore</td>\n","      <td>12.274538</td>\n","      <td>76.644605</td>\n","      <td>51.0</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>Owner</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>BHK</td>\n","      <td>933.159722</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Jigani,Bangalore</td>\n","      <td>12.778033</td>\n","      <td>77.632191</td>\n","      <td>43.0</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>Owner</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>2</td>\n","      <td>BHK</td>\n","      <td>929.921143</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Sector-1 Vaishali,Ghaziabad</td>\n","      <td>28.642300</td>\n","      <td>77.344500</td>\n","      <td>62.5</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>Dealer</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>BHK</td>\n","      <td>999.009247</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>New Town,Kolkata</td>\n","      <td>22.592200</td>\n","      <td>88.484911</td>\n","      <td>60.5</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["  POSTED_BY  UNDER_CONSTRUCTION  ...   LATITUDE  TARGET(PRICE_IN_LACS)\n","0     Owner                   0  ...  77.597960                   55.0\n","1    Dealer                   0  ...  76.644605                   51.0\n","2     Owner                   0  ...  77.632191                   43.0\n","3     Owner                   0  ...  77.344500                   62.5\n","4    Dealer                   1  ...  88.484911                   60.5\n","\n","[5 rows x 12 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"Esv1t-VYo7oE"},"source":["## 2. Encoding categorical columns."]},{"cell_type":"code","metadata":{"id":"A4XqOBkao3Gu","executionInfo":{"status":"ok","timestamp":1603350089349,"user_tz":-330,"elapsed":1618,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"30d0ac46-3920-47c3-d1bc-a9bda4e18201","colab":{"base_uri":"https://localhost:8080/","height":196}},"source":["df = pd.get_dummies(df, columns = cat_col)\n","df.head(3)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","      <th>POSTED_BY_Builder</th>\n","      <th>POSTED_BY_Dealer</th>\n","      <th>POSTED_BY_Owner</th>\n","      <th>BHK_OR_RK_BHK</th>\n","      <th>BHK_OR_RK_RK</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>1300.236407</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Ksfc Layout,Bangalore</td>\n","      <td>12.969910</td>\n","      <td>77.597960</td>\n","      <td>55.0</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>1275.000000</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Vishweshwara Nagar,Mysore</td>\n","      <td>12.274538</td>\n","      <td>76.644605</td>\n","      <td>51.0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>933.159722</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Jigani,Bangalore</td>\n","      <td>12.778033</td>\n","      <td>77.632191</td>\n","      <td>43.0</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   UNDER_CONSTRUCTION  RERA  ...  BHK_OR_RK_BHK  BHK_OR_RK_RK\n","0                   0     0  ...              1             0\n","1                   0     0  ...              1             0\n","2                   0     0  ...              1             0\n","\n","[3 rows x 15 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"wD-OgmztqsGR"},"source":["## 3. Filling Null Values"]},{"cell_type":"code","metadata":{"id":"rzW0258iquqf","executionInfo":{"status":"ok","timestamp":1603350092597,"user_tz":-330,"elapsed":1072,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"8e110e0c-d16d-4ee6-c8ef-9a54ea7f70e4","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["df = df.fillna(-999)\n","df.isnull().sum().sum()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"code","metadata":{"id":"U4obNdmqrLHk"},"source":["df[num_col+[TARGET_COL]] = df[num_col + [TARGET_COL]].apply(lambda x: np.log1p(x))"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"8EGTQyB6ruWK","executionInfo":{"status":"ok","timestamp":1603350095594,"user_tz":-330,"elapsed":1415,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"7b3601c0-6b33-4472-abef-5465709a9ef7","colab":{"base_uri":"https://localhost:8080/","height":221}},"source":["df[TARGET_COL]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0        4.025352\n","1        3.951244\n","2        3.784190\n","3        4.151040\n","4        4.119037\n","           ...   \n","98166         NaN\n","98167         NaN\n","98168         NaN\n","98169         NaN\n","98170         NaN\n","Name: TARGET(PRICE_IN_LACS), Length: 98171, dtype: float64"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"ItQQVaXka1Bx"},"source":["df['LATITUDE'] = df['LATITUDE'].fillna(df['LATITUDE'].median())\n","df['LONGITUDE'] = df['LONGITUDE'].fillna(df['LONGITUDE'].median())"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"eDSxJ7WebcGI","executionInfo":{"status":"ok","timestamp":1603350100082,"user_tz":-330,"elapsed":964,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"59c0271d-9367-48ee-9ad0-1ee0ce4691ee","colab":{"base_uri":"https://localhost:8080/","height":289}},"source":["df.isnull().sum()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["UNDER_CONSTRUCTION           0\n","RERA                         0\n","BHK_NO.                      0\n","SQUARE_FT                    0\n","READY_TO_MOVE                0\n","RESALE                       0\n","ADDRESS                      0\n","LONGITUDE                    0\n","LATITUDE                     0\n","TARGET(PRICE_IN_LACS)    68720\n","POSTED_BY_Builder            0\n","POSTED_BY_Dealer             0\n","POSTED_BY_Owner              0\n","BHK_OR_RK_BHK                0\n","BHK_OR_RK_RK                 0\n","dtype: int64"]},"metadata":{"tags":[]},"execution_count":13}]},{"cell_type":"markdown","metadata":{"id":"ZFXvEoIrr23D"},"source":["## 4. Split the processed dataset back into train and test datasets."]},{"cell_type":"code","metadata":{"id":"SAB9IjHyr53z"},"source":["trn_proc, test_proc = df[:train.shape[0]], df[train.shape[0]:].reset_index(drop = True)\n","features = [c for c in trn_proc.columns if c not in [TARGET_COL]]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"17GiPtPKizzx","executionInfo":{"status":"ok","timestamp":1603350105725,"user_tz":-330,"elapsed":1828,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"1862034c-58e4-4d59-b70e-d9bc44122abb","colab":{"base_uri":"https://localhost:8080/","height":259}},"source":["trn_proc.head(2)\n","test_proc.head(2)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","      <th>POSTED_BY_Builder</th>\n","      <th>POSTED_BY_Dealer</th>\n","      <th>POSTED_BY_Owner</th>\n","      <th>BHK_OR_RK_BHK</th>\n","      <th>BHK_OR_RK_RK</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>7.171070</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Ksfc Layout,Bangalore</td>\n","      <td>2.636906</td>\n","      <td>4.364346</td>\n","      <td>4.025352</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>7.151485</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Vishweshwara Nagar,Mysore</td>\n","      <td>2.585848</td>\n","      <td>4.352142</td>\n","      <td>3.951244</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   UNDER_CONSTRUCTION  RERA  ...  BHK_OR_RK_BHK  BHK_OR_RK_RK\n","0                   0     0  ...              1             0\n","1                   0     0  ...              1             0\n","\n","[2 rows x 15 columns]"]},"metadata":{"tags":[]},"execution_count":15},{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","      <th>POSTED_BY_Builder</th>\n","      <th>POSTED_BY_Dealer</th>\n","      <th>POSTED_BY_Owner</th>\n","      <th>BHK_OR_RK_BHK</th>\n","      <th>BHK_OR_RK_RK</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>6.302933</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Kamrej,Surat</td>\n","      <td>3.102881</td>\n","      <td>4.304709</td>\n","      <td>NaN</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>2</td>\n","      <td>6.685861</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>Panvel,Lalitpur</td>\n","      <td>2.994037</td>\n","      <td>4.306067</td>\n","      <td>NaN</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   UNDER_CONSTRUCTION  RERA  ...  BHK_OR_RK_BHK  BHK_OR_RK_RK\n","0                   0     0  ...              1             0\n","1                   1     1  ...              1             0\n","\n","[2 rows x 15 columns]"]},"metadata":{"tags":[]},"execution_count":15}]},{"cell_type":"code","metadata":{"id":"wQZHBKc8ew7e","executionInfo":{"status":"ok","timestamp":1603350109267,"user_tz":-330,"elapsed":2219,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"0cee4b5c-ab7b-4ed0-954e-2a5697e27837","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["trn_proc.shape, test_proc.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((29451, 15), (68720, 15))"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"code","metadata":{"id":"KawsYHdjVcTX","executionInfo":{"status":"ok","timestamp":1603350109278,"user_tz":-330,"elapsed":1184,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"d404a905-3f7c-4cc6-c735-705cfe64969c","colab":{"base_uri":"https://localhost:8080/","height":255}},"source":["features"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['UNDER_CONSTRUCTION',\n"," 'RERA',\n"," 'BHK_NO.',\n"," 'SQUARE_FT',\n"," 'READY_TO_MOVE',\n"," 'RESALE',\n"," 'ADDRESS',\n"," 'LONGITUDE',\n"," 'LATITUDE',\n"," 'POSTED_BY_Builder',\n"," 'POSTED_BY_Dealer',\n"," 'POSTED_BY_Owner',\n"," 'BHK_OR_RK_BHK',\n"," 'BHK_OR_RK_RK']"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"markdown","metadata":{"id":"tjIFWE9eVX4s"},"source":["## 5. Split the train set into train and validation sets"]},{"cell_type":"code","metadata":{"id":"bYqJQYoFVavQ"},"source":["trn, val = train_test_split(trn_proc, test_size=0.2, random_state=1)\n","\n","X_trn, X_val = trn[features], val[features]\n","\n","y_trn, y_val = trn[TARGET_COL], val[TARGET_COL]\n","\n","X_test = test_proc[features]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"cP0HCrk-h8pr","executionInfo":{"status":"ok","timestamp":1603350116282,"user_tz":-330,"elapsed":1290,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"3a971439-9da6-407c-accb-917a4f5d9938","colab":{"base_uri":"https://localhost:8080/","height":276}},"source":["X_trn.head(2)\n","X_val.head(2)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>POSTED_BY_Builder</th>\n","      <th>POSTED_BY_Dealer</th>\n","      <th>POSTED_BY_Owner</th>\n","      <th>BHK_OR_RK_BHK</th>\n","      <th>BHK_OR_RK_RK</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>22818</th>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>2</td>\n","      <td>6.528008</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>Kanjur Marg (East),Mumbai</td>\n","      <td>3.006750</td>\n","      <td>4.304639</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>11838</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>6.908755</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>Deopur,Dhule</td>\n","      <td>3.087408</td>\n","      <td>4.327834</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["       UNDER_CONSTRUCTION  RERA  ...  BHK_OR_RK_BHK  BHK_OR_RK_RK\n","22818                   1     1  ...              1             0\n","11838                   0     0  ...              1             0\n","\n","[2 rows x 14 columns]"]},"metadata":{"tags":[]},"execution_count":19},{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>POSTED_BY_Builder</th>\n","      <th>POSTED_BY_Dealer</th>\n","      <th>POSTED_BY_Owner</th>\n","      <th>BHK_OR_RK_BHK</th>\n","      <th>BHK_OR_RK_RK</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>11553</th>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>3</td>\n","      <td>7.485757</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Ramprastha Greens,Ghaziabad</td>\n","      <td>3.389527</td>\n","      <td>4.361171</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>16097</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>3</td>\n","      <td>7.124563</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Sri Balaji Krupa Layout,Bangalore</td>\n","      <td>2.636906</td>\n","      <td>4.364346</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["       UNDER_CONSTRUCTION  RERA  ...  BHK_OR_RK_BHK  BHK_OR_RK_RK\n","11553                   0     1  ...              1             0\n","16097                   0     0  ...              1             0\n","\n","[2 rows x 14 columns]"]},"metadata":{"tags":[]},"execution_count":19}]},{"cell_type":"code","metadata":{"id":"jsAcSuO-jhTP","executionInfo":{"status":"ok","timestamp":1603350119704,"user_tz":-330,"elapsed":1623,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"cce9d7b4-2a33-4981-b0a4-9032b421f2d0","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["X_trn.shape, X_val.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((23560, 14), (5891, 14))"]},"metadata":{"tags":[]},"execution_count":20}]},{"cell_type":"code","metadata":{"id":"fxnCds9WjL_2","executionInfo":{"status":"ok","timestamp":1603350121338,"user_tz":-330,"elapsed":1886,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"b17bdc2e-2c04-43d8-d178-89f01097fbbf","colab":{"base_uri":"https://localhost:8080/","height":119}},"source":["y_trn.head(2)\n","print()\n","y_val.head(2)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["22818    5.198497\n","11838    3.583519\n","Name: TARGET(PRICE_IN_LACS), dtype: float64"]},"metadata":{"tags":[]},"execution_count":21},{"output_type":"stream","text":["\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":["11553    4.795791\n","16097    4.330733\n","Name: TARGET(PRICE_IN_LACS), dtype: float64"]},"metadata":{"tags":[]},"execution_count":21}]},{"cell_type":"code","metadata":{"id":"9iRtQ613jr6D","executionInfo":{"status":"ok","timestamp":1603350122999,"user_tz":-330,"elapsed":879,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"b125af71-620a-4864-d80a-9834c4bc85e6","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["y_trn.shape, y_val.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((23560,), (5891,))"]},"metadata":{"tags":[]},"execution_count":22}]},{"cell_type":"code","metadata":{"id":"Kipj4YgxjxYh","executionInfo":{"status":"ok","timestamp":1603350125417,"user_tz":-330,"elapsed":1945,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"8313b2fa-be93-4254-d11a-febeb1d2b4fc","colab":{"base_uri":"https://localhost:8080/","height":131}},"source":["X_test.head(2)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>POSTED_BY_Builder</th>\n","      <th>POSTED_BY_Dealer</th>\n","      <th>POSTED_BY_Owner</th>\n","      <th>BHK_OR_RK_BHK</th>\n","      <th>BHK_OR_RK_RK</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>6.302933</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Kamrej,Surat</td>\n","      <td>3.102881</td>\n","      <td>4.304709</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>2</td>\n","      <td>6.685861</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>Panvel,Lalitpur</td>\n","      <td>2.994037</td>\n","      <td>4.306067</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>1</td>\n","      <td>0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   UNDER_CONSTRUCTION  RERA  ...  BHK_OR_RK_BHK  BHK_OR_RK_RK\n","0                   0     0  ...              1             0\n","1                   1     1  ...              1             0\n","\n","[2 rows x 14 columns]"]},"metadata":{"tags":[]},"execution_count":23}]},{"cell_type":"code","metadata":{"id":"t1EJtNYPj2xh","executionInfo":{"status":"ok","timestamp":1603350129640,"user_tz":-330,"elapsed":1744,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"b3d4896f-2bb1-473c-9296-f8b0399d7da5","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["X_test.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(68720, 14)"]},"metadata":{"tags":[]},"execution_count":24}]},{"cell_type":"markdown","metadata":{"id":"EioEfIumXZ2I"},"source":["## 6. Fit a regression Model on train, check its results on validation set."]},{"cell_type":"code","metadata":{"id":"ePGvoagaXbAb"},"source":["from sklearn.metrics import mean_squared_error, mean_squared_log_error\n","\n","def rmsle(y_test, y_pred):\n","  return np.sqrt(mean_squared_log_error(y_test, y_pred))\n","\n","def av_metrices(y_test, y_pred):\n","  return np.sqrt(mean_squared_error(y_test, y_pred))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Wn56w_nwYdXm"},"source":["### Only Numerical Columns"]},{"cell_type":"code","metadata":{"id":"smsFSqaTYfn_","executionInfo":{"status":"ok","timestamp":1603350134137,"user_tz":-330,"elapsed":1329,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"977f186c-7372-4fec-a470-96c4f307d990","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["clf = LinearRegression()\n","_ = clf.fit(X_trn[num_col], y_trn)\n","\n","pred_val = clf.predict(X_val[num_col])\n","\n","print(f'av_score {av_metrices(y_val, pred_val)}')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["av_score 0.6654834111017504\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"60kF-_2-gXDh","executionInfo":{"status":"ok","timestamp":1603279598770,"user_tz":-330,"elapsed":1118,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"05b5b4af-e3c5-4bd4-97cd-fb5ee7edfc55","colab":{"base_uri":"https://localhost:8080/","height":204}},"source":["X_test[num_col].head()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>SQUARE_FT</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>6.302933</td>\n","      <td>3.102881</td>\n","      <td>4.304709</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>6.685861</td>\n","      <td>2.994037</td>\n","      <td>4.306067</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>7.137355</td>\n","      <td>3.160916</td>\n","      <td>4.494070</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>7.245177</td>\n","      <td>3.331787</td>\n","      <td>4.338396</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>6.067216</td>\n","      <td>3.165475</td>\n","      <td>4.302307</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   SQUARE_FT  LONGITUDE  LATITUDE\n","0   6.302933   3.102881  4.304709\n","1   6.685861   2.994037  4.306067\n","2   7.137355   3.160916  4.494070\n","3   7.245177   3.331787  4.338396\n","4   6.067216   3.165475  4.302307"]},"metadata":{"tags":[]},"execution_count":26}]},{"cell_type":"code","metadata":{"id":"aDdO8gvibyaf"},"source":["pred_test = clf.predict(X_test[num_col])\n","\n","pred_test = np.expm1(pred_test)\n","\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = pred_test\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"lcWIyK3SkpQs"},"source":["sol_fl.to_csv('sol_file.csv', index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"BvWK439AhmRx"},"source":["## Numerical Columns + Categorical Columns"]},{"cell_type":"code","metadata":{"id":"LT5ZeeathoDU","executionInfo":{"status":"ok","timestamp":1603279640874,"user_tz":-330,"elapsed":2079,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"72fa8e4f-6f53-4a03-ee7f-ebb2f7a90a15","colab":{"base_uri":"https://localhost:8080/","height":85}},"source":["X_trn.columns"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Index(['UNDER_CONSTRUCTION', 'RERA', 'BHK_NO.', 'SQUARE_FT', 'READY_TO_MOVE',\n","       'RESALE', 'ADDRESS', 'LONGITUDE', 'LATITUDE', 'POSTED_BY_Builder',\n","       'POSTED_BY_Dealer', 'POSTED_BY_Owner', 'BHK_OR_RK_BHK', 'BHK_OR_RK_RK'],\n","      dtype='object')"]},"metadata":{"tags":[]},"execution_count":29}]},{"cell_type":"code","metadata":{"id":"zizB_3Yfl3_E"},"source":["features = [c for c in X_trn.columns if c not in ['ADDRESS', TARGET_COL]]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"fR0XNts-rjQz","executionInfo":{"status":"ok","timestamp":1603279644358,"user_tz":-330,"elapsed":1016,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"814c5640-e965-4de0-cc6e-5c2401b27de8","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["clf = LinearRegression()\n","_ = clf.fit(X_trn[features], y_trn)\n","\n","pred_val = clf.predict(X_val[features])\n","\n","print(f'av_score {av_metrices(y_val, pred_val)}')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["av_score 0.6010750252205972\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"vJoOksPJrtc-"},"source":["pred_test = clf.predict(X_test[features])\n","\n","pred_test = np.expm1(pred_test)\n","\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = pred_test"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"AsFZS31zr5hk","executionInfo":{"status":"ok","timestamp":1603279650230,"user_tz":-330,"elapsed":1591,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"f892c390-8c09-4857-8452-98ad8ceb3487","colab":{"base_uri":"https://localhost:8080/","height":266}},"source":["sol_fl[sol_fl['TARGET(PRICE_IN_LACS)']<0]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>6304</th>\n","      <td>-0.714612</td>\n","    </tr>\n","    <tr>\n","      <th>9540</th>\n","      <td>-0.485244</td>\n","    </tr>\n","    <tr>\n","      <th>17659</th>\n","      <td>-0.363740</td>\n","    </tr>\n","    <tr>\n","      <th>32087</th>\n","      <td>-0.203509</td>\n","    </tr>\n","    <tr>\n","      <th>52090</th>\n","      <td>-0.013579</td>\n","    </tr>\n","    <tr>\n","      <th>58195</th>\n","      <td>-0.528095</td>\n","    </tr>\n","    <tr>\n","      <th>66200</th>\n","      <td>-0.354982</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["       TARGET(PRICE_IN_LACS)\n","6304               -0.714612\n","9540               -0.485244\n","17659              -0.363740\n","32087              -0.203509\n","52090              -0.013579\n","58195              -0.528095\n","66200              -0.354982"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"code","metadata":{"id":"1kgpvw_OtsSv"},"source":["for d in sol_fl['TARGET(PRICE_IN_LACS)']:\n","  if(d<0):\n","    sol_fl['TARGET(PRICE_IN_LACS)']=0;"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"W4y_QjPhuOPt","executionInfo":{"status":"ok","timestamp":1603279653512,"user_tz":-330,"elapsed":975,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"a4476e71-e791-4dcd-8522-602471cd6fc3","colab":{"base_uri":"https://localhost:8080/","height":49}},"source":["sol_fl[sol_fl['TARGET(PRICE_IN_LACS)']<0]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["Empty DataFrame\n","Columns: [TARGET(PRICE_IN_LACS)]\n","Index: []"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"code","metadata":{"id":"dB4Uo07Gr0Py"},"source":["sol_fl.to_csv('cat_num.csv', index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Wi5tyjWuykgu"},"source":["## DecisionTree"]},{"cell_type":"code","metadata":{"id":"xZXEfe81yoRd","executionInfo":{"status":"ok","timestamp":1603279659963,"user_tz":-330,"elapsed":1565,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"bc7b1128-3ebe-400d-bfed-2e5cbcc80386","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["clf = DecisionTreeRegressor(random_state=2)\n","_ = clf.fit(X_trn[features], y_trn)\n","\n","pred = clf.predict(X_val[features])\n","\n","print(f'av score {av_metrices(y_val, pred)}')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["av score 0.4653047493054121\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"4U-asJ8zzZbM"},"source":["## Hyperparameter Tuning"]},{"cell_type":"code","metadata":{"id":"Tuutmv5ezYyO","executionInfo":{"status":"ok","timestamp":1603279665795,"user_tz":-330,"elapsed":3516,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"a99b53d5-b433-44e3-d24a-d99787efa7e7","colab":{"base_uri":"https://localhost:8080/","height":85}},"source":["from sklearn.model_selection import RandomizedSearchCV\n","\n","hyperparm_com = {\n","    'max_depth': [4, 8, 10, 12, 16],\n","    'min_samples_split': [2, 10, 20, 30, 40],\n","    'max_features': [0.2, 0.4, 0.6, 0.8, 1],\n","    'max_leaf_nodes': [8, 16, 32, 64, 128]\n","}\n","\n","clf = RandomizedSearchCV(DecisionTreeRegressor(),\n","                         hyperparm_com,\n","                         scoring='neg_root_mean_squared_error',\n","                         random_state=1,\n","                         n_iter=20)\n","\n","search = clf.fit(trn_proc[features], trn_proc[TARGET_COL])\n","search.best_params_"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'max_depth': 16,\n"," 'max_features': 0.8,\n"," 'max_leaf_nodes': 128,\n"," 'min_samples_split': 2}"]},"metadata":{"tags":[]},"execution_count":38}]},{"cell_type":"code","metadata":{"id":"IYdHkRjv1otS","executionInfo":{"status":"ok","timestamp":1603279674920,"user_tz":-330,"elapsed":1067,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"e685ab42-024f-4d63-8ee2-f0d8134c8b2e","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["best_params = {'max_depth': 16,\n","               'max_features': 0.8,\n","               'max_leaf_nodes': 128,\n","               'min_samples_split': 2}\n","\n","\n","clf = DecisionTreeRegressor(**best_params)\n","_ = clf.fit(X_trn[features], y_trn)\n","\n","pred = clf.predict(X_val[features])\n","\n","print(f'av score {av_metrices(y_val, pred)}')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["av score 0.4411577992062444\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"uOkDpWB22sry"},"source":["pred_test = clf.predict(X_test[features])\n","\n","pred_test = np.expm1(pred_test)\n","\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = pred_test"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"x3NKnhxz2vy5","executionInfo":{"status":"ok","timestamp":1603279682140,"user_tz":-330,"elapsed":919,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"f12d98b0-234e-45fa-b88b-ceec5cf56108","colab":{"base_uri":"https://localhost:8080/","height":419}},"source":["sol_fl"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>15.251303</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>58.708896</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>58.659597</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>42.418145</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>15.251303</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>68715</th>\n","      <td>107.313558</td>\n","    </tr>\n","    <tr>\n","      <th>68716</th>\n","      <td>111.233775</td>\n","    </tr>\n","    <tr>\n","      <th>68717</th>\n","      <td>8119.024313</td>\n","    </tr>\n","    <tr>\n","      <th>68718</th>\n","      <td>87.209671</td>\n","    </tr>\n","    <tr>\n","      <th>68719</th>\n","      <td>464.486698</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>68720 rows × 1 columns</p>\n","</div>"],"text/plain":["       TARGET(PRICE_IN_LACS)\n","0                  15.251303\n","1                  58.708896\n","2                  58.659597\n","3                  42.418145\n","4                  15.251303\n","...                      ...\n","68715             107.313558\n","68716             111.233775\n","68717            8119.024313\n","68718              87.209671\n","68719             464.486698\n","\n","[68720 rows x 1 columns]"]},"metadata":{"tags":[]},"execution_count":41}]},{"cell_type":"code","metadata":{"id":"URGSaPz62zLh","executionInfo":{"status":"ok","timestamp":1603279686926,"user_tz":-330,"elapsed":1869,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"777bb18e-6e46-4a3f-e3e4-2e6caaff99a9","colab":{"base_uri":"https://localhost:8080/","height":49}},"source":["sol_fl[sol_fl['TARGET(PRICE_IN_LACS)']<0]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["Empty DataFrame\n","Columns: [TARGET(PRICE_IN_LACS)]\n","Index: []"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"code","metadata":{"id":"1phyBQuB3JvX"},"source":["sol_fl.to_csv(\"decisionTree.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Uk-mZ8g93YK-"},"source":["## Validation Strategy."]},{"cell_type":"markdown","metadata":{"id":"pRakzvWH3adt"},"source":["### K-Fold Validation"]},{"cell_type":"code","metadata":{"id":"JZy_lxfW3du3"},"source":["from sklearn.model_selection import StratifiedKFold\n","\n","def clf_run(clf, train, test, features):\n","  N_SPLITS = 5\n","\n","  oofs = np.zeros(len(train))\n","  preds = np.zeros(len(test))\n","\n","  target = train[TARGET_COL]\n","\n","  folds = StratifiedKFold(n_splits=N_SPLITS)\n","  stratified_target = pd.qcut(train[TARGET_COL], 10, labels=False, duplicates='drop')\n","\n","  for fold_, (trn_idx, val_idx) in enumerate(folds.split(train, stratified_target)):\n","    print(f'\\n------------- Fold {fold_ + 1} -------------')\n","\n","    ############# Get train, validation and test sets along with targets ################\n","  \n","    ### Training Set\n","    X_trn, y_trn = train[features].iloc[trn_idx], target.iloc[trn_idx]\n","\n","    ### Validation Set\n","    X_val, y_val = train[features].iloc[val_idx], target.iloc[val_idx]\n","\n","    ### Test Set\n","    X_test = test[features]\n","\n","    ############# Scaling Data ################\n","    scaler = StandardScaler()\n","    _ = scaler.fit(X_trn)\n","\n","    X_trn = scaler.transform(X_trn)\n","    X_val = scaler.transform(X_val)\n","    X_test = scaler.transform(X_test)\n","\n","    ############# Fitting and Predicting ################\n","\n","    _ = clf.fit(X_trn, y_trn)\n","\n","    ### Instead of directly predicting the classes we will obtain the probability of positive class.\n","    preds_val = clf.predict(X_val)\n","    preds_test = clf.predict(X_test)\n","\n","    fold_score = av_metrices(y_val, preds_val)\n","    print(f'\\nAV metric score for validation set is {fold_score}')\n","\n","    oofs[val_idx] = preds_val\n","    preds += preds_test / N_SPLITS\n","\n","\n","  oofs_score = av_metrices(target, oofs)\n","  print(f'\\n\\nAV metric for oofs is {oofs_score}')\n","\n","  return oofs, preds"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"OmDtupjA5vCM"},"source":["### KFold on Decision Tree"]},{"cell_type":"code","metadata":{"id":"9ylVi4Sm5rG6","executionInfo":{"status":"ok","timestamp":1603279701065,"user_tz":-330,"elapsed":1460,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"7e299c74-7954-498b-8e2c-a7d7724fe8b1","colab":{"base_uri":"https://localhost:8080/","height":408}},"source":["dt_params = {'max_depth': 16,\n","               'max_features': 0.8,\n","               'max_leaf_nodes': 128,\n","               'min_samples_split': 2}\n","\n","clf = DecisionTreeRegressor(**dt_params)\n","\n","dt_oofs, dt_preds = clf_run(clf, trn_proc, test_proc, features)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","\n","AV metric score for validation set is 0.44092729788669416\n","\n","------------- Fold 2 -------------\n","\n","AV metric score for validation set is 0.4307994008846047\n","\n","------------- Fold 3 -------------\n","\n","AV metric score for validation set is 0.4337779343359424\n","\n","------------- Fold 4 -------------\n","\n","AV metric score for validation set is 0.4179181427123241\n","\n","------------- Fold 5 -------------\n","\n","AV metric score for validation set is 0.4523334620899523\n","\n","\n","AV metric for oofs is 0.43529995962041523\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"d1NE0aZu7Dfv"},"source":["pred_test = np.expm1(dt_preds)\n","\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = pred_test"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"1MFkThrL7ZBL","executionInfo":{"status":"ok","timestamp":1603279708400,"user_tz":-330,"elapsed":941,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"cb217b7b-199e-4633-c9db-b8492d3d8c58","colab":{"base_uri":"https://localhost:8080/","height":419}},"source":["sol_fl"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>16.893438</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>55.305392</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>53.282470</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>43.798628</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>14.033929</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>68715</th>\n","      <td>105.855527</td>\n","    </tr>\n","    <tr>\n","      <th>68716</th>\n","      <td>97.478096</td>\n","    </tr>\n","    <tr>\n","      <th>68717</th>\n","      <td>5944.433124</td>\n","    </tr>\n","    <tr>\n","      <th>68718</th>\n","      <td>82.292310</td>\n","    </tr>\n","    <tr>\n","      <th>68719</th>\n","      <td>397.292219</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>68720 rows × 1 columns</p>\n","</div>"],"text/plain":["       TARGET(PRICE_IN_LACS)\n","0                  16.893438\n","1                  55.305392\n","2                  53.282470\n","3                  43.798628\n","4                  14.033929\n","...                      ...\n","68715             105.855527\n","68716              97.478096\n","68717            5944.433124\n","68718              82.292310\n","68719             397.292219\n","\n","[68720 rows x 1 columns]"]},"metadata":{"tags":[]},"execution_count":46}]},{"cell_type":"code","metadata":{"id":"1SLCjX_x7cJT","executionInfo":{"status":"ok","timestamp":1602407504428,"user_tz":-330,"elapsed":1518,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"338bb506-9c15-46ce-da01-9b4bbe6e6246","colab":{"base_uri":"https://localhost:8080/","height":49}},"source":["sol_fl[sol_fl['TARGET(PRICE_IN_LACS)']<0]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["Empty DataFrame\n","Columns: [TARGET(PRICE_IN_LACS)]\n","Index: []"]},"metadata":{"tags":[]},"execution_count":147}]},{"cell_type":"code","metadata":{"id":"dEgqSBjT7ihy"},"source":["sol_fl.to_csv(\"kFold_decisionTree.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"ctqvd1Rn7svL"},"source":["## Gradient Boosting"]},{"cell_type":"code","metadata":{"id":"h7tIjCF67sXG","executionInfo":{"status":"ok","timestamp":1603295034891,"user_tz":-330,"elapsed":7743,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"87771460-32f3-4980-de24-576c17e88958","colab":{"base_uri":"https://localhost:8080/","height":408}},"source":["clf = LGBMRegressor()\n","lgb_oofs, lgb_preds = clf_run(clf, trn_proc, test_proc, features)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","\n","AV metric score for validation set is 0.31557856157717873\n","\n","------------- Fold 2 -------------\n","\n","AV metric score for validation set is 0.3244882820910101\n","\n","------------- Fold 3 -------------\n","\n","AV metric score for validation set is 0.3224093489221962\n","\n","------------- Fold 4 -------------\n","\n","AV metric score for validation set is 0.31637574095851245\n","\n","------------- Fold 5 -------------\n","\n","AV metric score for validation set is 0.34017328655740836\n","\n","\n","AV metric for oofs is 0.3239261736967597\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"krx7U1mV8Flh"},"source":["pred_test = np.expm1(lgb_preds)\n","\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = pred_test"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"K_phzmHe8PT1","executionInfo":{"status":"ok","timestamp":1603279723573,"user_tz":-330,"elapsed":1345,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"ec887338-d426-4b36-a62d-125daaf9a207","colab":{"base_uri":"https://localhost:8080/","height":419}},"source":["sol_fl"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>14.370994</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>61.591710</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>61.558298</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>40.208632</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>14.760902</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>68715</th>\n","      <td>110.073486</td>\n","    </tr>\n","    <tr>\n","      <th>68716</th>\n","      <td>108.204737</td>\n","    </tr>\n","    <tr>\n","      <th>68717</th>\n","      <td>6605.221678</td>\n","    </tr>\n","    <tr>\n","      <th>68718</th>\n","      <td>85.513612</td>\n","    </tr>\n","    <tr>\n","      <th>68719</th>\n","      <td>547.562998</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>68720 rows × 1 columns</p>\n","</div>"],"text/plain":["       TARGET(PRICE_IN_LACS)\n","0                  14.370994\n","1                  61.591710\n","2                  61.558298\n","3                  40.208632\n","4                  14.760902\n","...                      ...\n","68715             110.073486\n","68716             108.204737\n","68717            6605.221678\n","68718              85.513612\n","68719             547.562998\n","\n","[68720 rows x 1 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"code","metadata":{"id":"Eg_MxxPt8Vby","executionInfo":{"status":"ok","timestamp":1602497722766,"user_tz":-330,"elapsed":1242,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"283d1fa5-88b7-432e-978c-9e00efc851ef","colab":{"base_uri":"https://localhost:8080/","height":49}},"source":["sol_fl[sol_fl['TARGET(PRICE_IN_LACS)']<0]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["Empty DataFrame\n","Columns: [TARGET(PRICE_IN_LACS)]\n","Index: []"]},"metadata":{"tags":[]},"execution_count":44}]},{"cell_type":"code","metadata":{"id":"AsWbKfbR8aUk"},"source":["sol_fl.to_csv(\"kFold_lgmb.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"CTCcBnFE8fdj"},"source":["## Tuning LightGBM"]},{"cell_type":"code","metadata":{"id":"-1Bl_pTK8e0s"},"source":["def run_gradient_boosting(clf, fit_params, train, test, features):\n","  N_SPLITS = 5\n","  oofs = np.zeros(len(trn_proc))\n","  preds = np.zeros((len(test_proc)))\n","\n","  target = train[TARGET_COL]\n","\n","  folds = StratifiedKFold(n_splits = N_SPLITS)\n","  stratified_target = pd.qcut(train[TARGET_COL], 10, labels = False, duplicates='drop')\n","\n","  feature_importances = pd.DataFrame()\n","\n","  for fold_, (trn_idx, val_idx) in enumerate(folds.split(train, stratified_target)):\n","    print(f'\\n------------- Fold {fold_ + 1} -------------')\n","\n","    ### Training Set\n","    X_trn, y_trn = train[features].iloc[trn_idx], target.iloc[trn_idx]\n","\n","    ### Validation Set\n","    X_val, y_val = train[features].iloc[val_idx], target.iloc[val_idx]\n","\n","    ### Test Set\n","    X_test = test[features]\n","\n","    scaler = StandardScaler()\n","    _ = scaler.fit(X_trn)\n","\n","    X_trn = scaler.transform(X_trn)\n","    X_val = scaler.transform(X_val)\n","    X_test = scaler.transform(X_test)\n","    \n","    _ = clf.fit(X_trn, y_trn, eval_set = [(X_val, y_val)], **fit_params)\n","\n","    fold_importance = pd.DataFrame({'fold': fold_ + 1, 'feature': features, 'importance': clf.feature_importances_})\n","    feature_importances = pd.concat([feature_importances, fold_importance], axis=0)\n","\n","    ### Instead of directly predicting the classes we will obtain the probability of positive class.\n","    preds_val = clf.predict(X_val)\n","    preds_test = clf.predict(X_test)\n","\n","    fold_score = av_metrices(y_val, preds_val)\n","    print(f'\\nAV metric score for validation set is {fold_score}')\n","\n","    oofs[val_idx] = preds_val\n","    preds += preds_test / N_SPLITS\n","\n","\n","  oofs_score = av_metrices(target, oofs)\n","  print(f'\\n\\nAV metric for oofs is {oofs_score}')\n","\n","  feature_importances = feature_importances.reset_index(drop = True)\n","  fi = feature_importances.groupby('feature')['importance'].mean().sort_values(ascending = False)[:20][::-1]\n","  fi.plot(kind = 'barh', figsize=(12, 6))\n","\n","  return oofs, preds, fi"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"TtTxAZO3kn2p"},"source":["### Manual Tuning. Choosing Hyperparameters to Tune"]},{"cell_type":"code","metadata":{"id":"BgQcQMxpknaq","executionInfo":{"status":"ok","timestamp":1603295123597,"user_tz":-330,"elapsed":24411,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"30f66208-efef-4e47-eb47-56808eae951f","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["from sklearn.model_selection import StratifiedKFold\n","clf = LGBMRegressor(n_estimators = 1000,\n","                        learning_rate = 0.3,\n","                        colsample_bytree = 0.7,\n","                        metric = 'None')\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200, 'eval_metric': 'rmse'}\n","\n","lgb_oofs, lgb_preds, fi = run_gradient_boosting(clf, fit_params, trn_proc, test_proc, features)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.29368\n","[400]\tvalid_0's rmse: 0.290027\n","[600]\tvalid_0's rmse: 0.288896\n","Early stopping, best iteration is:\n","[551]\tvalid_0's rmse: 0.288625\n","\n","AV metric score for validation set is 0.28862503477200935\n","\n","------------- Fold 2 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.30238\n","[400]\tvalid_0's rmse: 0.299502\n","Early stopping, best iteration is:\n","[388]\tvalid_0's rmse: 0.299294\n","\n","AV metric score for validation set is 0.2992935930262221\n","\n","------------- Fold 3 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.30757\n","[400]\tvalid_0's rmse: 0.304747\n","Early stopping, best iteration is:\n","[395]\tvalid_0's rmse: 0.304667\n","\n","AV metric score for validation set is 0.3046673340055486\n","\n","------------- Fold 4 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.296929\n","[400]\tvalid_0's rmse: 0.292599\n","[600]\tvalid_0's rmse: 0.291745\n","Early stopping, best iteration is:\n","[505]\tvalid_0's rmse: 0.291233\n","\n","AV metric score for validation set is 0.29123342467450064\n","\n","------------- Fold 5 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.324862\n","[400]\tvalid_0's rmse: 0.321217\n","[600]\tvalid_0's rmse: 0.320848\n","Early stopping, best iteration is:\n","[558]\tvalid_0's rmse: 0.320011\n","\n","AV metric score for validation set is 0.32001086365929227\n","\n","\n","AV metric for oofs is 0.3009737112501335\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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ZVwREZGGkJWVZekQmlRJSck/7pz/SZTf+lFx04SuuuoqMjIy6Nixo7ktKyuLXr16VdnPw8MDJycntm/fbm7r1asXe/fupWPHjlx77bXEx8eb76upLwcHByorK80FS15eHh06dKh23/Lycvbv34+bmxu//PKL7rkREZFLzp9XS1i7rKysf9w5/5Mov+ekp6fXuE3L0pqQv78/y5cvJy8vD4CioiJeeukl8xPPzjd37lxefvnlKscuW7aM48ePA1BZWclXX32Fg4NDvccfMmQIKSlnnmZmNBrZsmULN998c7X7Ll++nFtuuYU2bdrUu38REREREUvSzE0jysnJwc/Pz/z5iSeeYO7cucyYMcP8KGh/f3+GDBlywbHdu3enb9++/PTTTwAMGDCAkJAQZs2ahb29PaWlpVxzzTWEh4fXO57w8HAiIiJ4++23MRqNjB49mltuucW8fcmSJaxevZoTJ05wzTXXEBYWZt7252VpcObx0n+luBIRERERaUwGk8lksnQQYh3S09MZPHiwpcOQRqLpcOunHFs35df6KcfWTfk9p7bvnFqWJiIiIiIiVkHFjYiIiIiIWAUVNyIiIiIiYhVU3IiIiIiIiFVQcSMiIiIiIlZBxY2IiIiIiFgFFTciIiIiImIV9BJPCzty5AhBQUEkJCRcsG369Om0aNGCmJgYfvjhByIjIwH49ttvGTBgALa2tjz44IN8//33tG7dmh49evDqq68CsGvXLgYNGgSceXno888/T3h4OFdffbW5/+uuu44dO3aQkJDA0qVL6datG5WVlbRu3ZqQkBC6du3KkSNHGDt2LP37968S2/Lly3Fxcbkg5u6hKQ12baQ5OmDpAKTRKcfWrXnk9+DiuywdgohYKRU3zdTx48fJzs6mpKSEwsJCevfuTXx8PAAjR44kNjYWJycnAL7//nsAbrzxRm688UbgTOFydv/6GDNmDCEhIQB88cUXzJgxg/feew+AHj16/KW+REREREQsQcvSmqnU1FRGjBjBjTfeyNatW5t07JtuuomhQ4fy3//+t0nHFRERERH5O1TcNFPJycncdddd3H333aSmpjb5+P379+enn35q8nFFRERERC6WlqU1Q4cPH+bo0aMMHjyY8vJynnzySfLy8mjTpk2DjmMwGGrcVlxcjK2tLQA5OTn4+fmZt/Xo0YOnn366QWMREZF/jqysLEuHYJVKSkp0ba2Y8ls/Km6aoeTkZEpLSxk/fjwA5eXlvP/++/j6+l50n61bt6agoMD8OS8vj/bt29e4f0ZGBnfddeaGT91zIyIiDcnd3d3SIVilrKwsXVsrpvyek56eXuM2LUtrhlJSUlizZg2JiYkkJiYSHR1NSsrfewrZ8OHDzQ8IAHjnnXfw9PSsdt9PP/2UAwcOMHLkyL81poiIiIhIU9LMTTNw/rKvffv2mZ+OdtaQIUM4fvw4v/32G1deeeVFjTFx4kRefPFFJk2ahK2tLT179mT+/Pnm7ampqWRkZFBcXEybNm1Yvnw5NjY2F8R31hNPPIGHh8dFxSIiIiIi0hgMJpPJZOkgxDqkp6czePBgS4chjUTT4dZPObZuyq/1U46tm/J7Tm3fObUsTURERERErIKKGxERERERsQoqbkRERERExCqouBEREREREaug4kZERERERKyCihsREREREbEKKm5ERERERMQq6CWe0qC6h6ZYOgRpVAcsHUCzcnDxXZYOQURERM7TrIqbqKgo3Nzc8Pb2NrcVFxczduxYPvroIwtGVrcdO3bw2GOP4ebmhslkory8nMcff5whQ4YAkJSUxBtvvIG9vT1Go5FZs2Zxxx13APDDDz/w7LPPUllZyalTpxg+fDiPP/44UVFRZGZmkpuby+nTp+nWrRtXXHEF0dHR9OvXj0GDBlWJ4d///jfHjx83x1FZWcnll1/O3Llz6du3b42xJyQksHTpUrp164bJZMLBwYHnnnsOBwcHvL29efvtt2nTpg0AqamppKWlsWzZska6kiIiIiIiF6dZFTeXumHDhpm/9P/888/MnDmTtLQ0du/ezZo1a1i9ejUuLi4UFRXx8MMP06pVK4YPH05kZCRPPPEEHh4eVFZWEhAQQGZmJqGhocCZ4mP//v2EhISYx3J2diY+Pv6CGI4fP14ljszMTIKCgtiwYQMdOnSoMfYxY8aY+4+Ojmbz5s3MmjWLBx98kJiYGJ588knKysp45ZVXePXVVxvsmomIiIiINJQmLW6KioqYN28ep06doqSkhPDwcHJycli5ciWurq44Ojri5uZGUVERc+bMobS0lMGDB5uPHzVqFJ6enrRt25bZs2dXO4aXlxcjR45k+/bt3HzzzZhMJr788ks8PT15/PHH+emnn3j66acxGAw4OTmxePFiWrVqxaJFi9izZw+lpaVMnjwZHx8fQkND6dChA5mZmfz666+88MIL9OvXr17n2q1bN4qKiqioqGDt2rUEBQXh4uICnClMgoODWblyJcOHD6ewsJCioiIAbGxsWLFixd+80uf069ePCRMm8O677zJr1qx6HXP8+HEGDhwIwKRJk7j33ns5dOgQH3/8MSNGjKBr164NFp+IiIiISENp0uImNzcXHx8fvLy82L59O7Gxsezdu5fNmzfTqlUr83K0xMRE3NzcCAsLIzU1lZSUM/dxlJeX4+npiaenZ41jHDlyhIkTJzJ37lyGDRvGunXreOyxxxgxYgSPP/44zzzzDE8//TTdu3dn/fr1rF+/nmnTptG5c2fmz59PSUkJXl5e+Pj4AFBWVsaqVavYuHEjW7ZsqXdxs2fPHq688kpsbW05cOAA7u7uVba7u7uTk5MDQGBgII899hgDBgzgxhtvZOzYsbXOsvxV/fv357333qt1n9TUVDIyMsjPz8fJyYl//etfANjZ2REcHExkZCS//vorb731VoPFJSIiIiLSkJq0uGnXrh0xMTGsWrWKsrIySktLcXJyom3btgDme0iys7MZOnQocGap1/k8PDxqHcPZ2ZmePXsCcPnll9OvXz/s7OyorKwEzhQd4eHhwJnCZcCAAbRo0YKTJ08yadIk7O3tyc/PN/d39p6Zjh07smfPnlrH3rlzJ35+fphMJpydnVm8eDEABoPBPP5ZJpMJG5szD6vz8vJi2LBhfPHFF3z88ce89tprrF27lj59+tQ4VlFREX5+flXOu6YZn+LiYmxtbWuN/fxlaVu2bOGpp57i+eefB2DEiBGsXLmSiRMn4uzsXGs/Iv8kWVlZlg6hQZWUlFjdOck5yq/1U46tm/JbP01a3MTFxeHq6srzzz/P3r17CQ0NNX/BhzNf+M/+PNv+56LA3t6+1jH+/CXezq7qKV522WWsXbsWg8Fgbtu5cydfffUV8fHx2Nvbc+2111bb39n4anL+vS7nu+qqq8jIyKBjx47mtqysLHr16gWc+WNt1aoVY8aMYcyYMURHR7Nt27Zai5ua7rmpTkZGxgUzR7W54447WLp0aZW2rl27ajmayJ/8lX9Xl4KsrCyrOyc5R/m1fsqxdVN+z0lPT69xW5O+5yY/P59u3boBsG3bNlq2bElhYSEFBQUYjUZ27doFQI8ePcjIyADOPIWsIfXp04fPPvsMgJSUFLZv305+fj4dO3bE3t6eDz/8kIqKCsrKyhpsTH9/f5YvX05eXh5wZtblpZde4sEHH6SoqIjRo0dz7Ngx8/6///47Xbp0aZCx9+7dy9atW7nvvvvqfcx3331Hjx49GmR8EREREZGm0qQzN+PGjSMkJIS0tDR8fX1JTk4mICCAKVOm0LlzZ9zc3AAYP348AQEBTJ06tcoDBRrCggULCA8PJzY2lhYtWvDiiy9ia2tLbGwsU6ZMwcvLi1tvvZWIiIgGG/Oaa65h7ty5zJgxw/woaH9/f/OSt4iICIKCgrC3t6e8vBwPDw/uueeeWvv887I0gAcffBBnZ2fz8rjTp0/j6OjIkiVLcHJyqrW/s/fcnNWQ5y8iIiIi0hQMprrWWonUU3p6eoMXo9J8aDrc+inH1k35tX7KsXVTfs+p7TvnJfmemw8//JA1a9Zc0O7v78/tt9/eqGMHBgZy8uTJKm213czfXJSVlTF9+vQL2nv06MHTTz9tgYhERERERBrWJVnc3Hbbbdx2220WGTs6Otoi4/5dDg4O9X4AgYiIiIjIpahJHyggIiIiIiLSWFTciIiIiIiIVVBxIyIiIiIiVkHFjYiIiIiIWAUVNyIiIiIiYhUuyaelSfPVPTTF0iFIozpg6QAa1cHFd1k6BBEREfkbNHPzDxUVFUVCQkK99i0vLyckJITJkydz//3388033zRydCIiIiIif51mbqROiYmJXHbZZWzcuJH9+/czf/58Nm3aZOmwRERERESqUHFjpYqKipg3bx6nTp2ipKSE8PBwcnJyWLlyJa6urjg6OuLm5kZCQgKfffYZx44d46WXXsLV1fWCvu655x7uvvtuANq0acOJEyea+nREREREROqk4sZK5ebm4uPjg5eXF9u3byc2Npa9e/eyefNmWrVqhbe3t3nf3377jTfffBODwVBtX/b29ubf4+LizIWOiLXJysqydAgWVVJS8o+/BtZM+bV+yrF1U37rR8WNlWrXrh0xMTGsWrWKsrIySktLcXJyom3btgAMGjTIvO+AAQNqLGzOt379ejIzM3n11VcbLW4RS3J3d7d0CBaVlZX1j78G1kz5tX7KsXVTfs9JT0+vcZseKGCl4uLicHV1ZePGjURERGAymbCxOZduk8lk/v38mZmavPPOO3z00UfExMTUa38RERERkaam4sZK5efn061bNwC2bdtGy5YtKSwspKCgAKPRyK5du+rd1+HDh3nzzTeJjo6mRYsWjRWyiIiIiMjfomVpVmrcuHGEhISQlpaGr68vycnJBAQEMGXKFDp37oybm1u9+3rnnXc4ceIEM2fONLetWrUKBweHC/bVe0Ksl6bDRUREpLlTcWOlPDw8eP/9982fb7vtNgB8fHz+cl/BwcEEBwc3WGwiIiIiIo1BxY2YBQYGcvLkySptzs7OrFixwkIRiYiIiIjUn4obMYuOjrZ0CCIiIiIiF00PFBAREREREaug4kZERERERKyCihsREREREbEKKm5ERERERMQqXJIPFIiKisLNzQ1vb29zW3FxMWPHjuWjjz6yYGSNb+TIkSQlJeHk5FTvY15//XWGDh3KtddeywcffMAdd9xRr+OCgoLw9fXluuuuq/dY3UNT6r2vXDr0/iIRERG5FGjm5h9g5syZXHvttRw5coSUFBUfIiIiImKdmuXMTVFREfPmzePUqVOUlJQQHh5OTk4OK1euxNXVFUdHR9zc3CgqKmLOnDmUlpYyePBg8/GjRo3C09OTtm3b4u3tzYIFCzAajdja2hIZGUmnTp2IjIwkIyODiooKJk+ejLe3d7Vt1UlISODrr78mPz+f/fv3M3fuXJKTk8nOzuaFF15g4MCBrF+/nqSkJGxsbPDy8mLatGn8/vvvPPHEEwCUl5cTFRVFt27duP322/Hy8mLXrl20bNmS119/HRub2uvO33//nbCwMIxGIwaDgWeffZauXbsSGRnJrl27cHNzIycnhyVLlhAdHc0dd9zBxo0b2bNnD9HR0ZhMJlq3bs2UKVP48ccfeeaZZ4iPjyc2NpaUlBQ6depEUVGROR9hYWGcPHmSiooKnnzySfr06dNA2RYRERERaRjNcuYmNzcXHx8f4uPjCQ4OJjY2lpdeeok1a9awYsUKDh06BEBiYiJubm5s2LABd3d38/Hl5eV4enoye/Zsli5dyrRp04iLi2Pq1KnExMRw4sQJPvnkE9588002bNhAeXl5tW21OXjwICtWrGDWrFm89tprvPLKK8ycOZPk5GQOHz5MWloaGzduZP369WzdupVff/2VY8eOERAQQHx8PBMmTGDDhg0AHD58mHHjxvHWW29RUFDADz/8UOc1Wrp0Kffddx/x8fE88MADREdH88MPP5Cens6mTZuYNm0aGRkZVY6ZPn06w4YNIzAwsNo+CwoK2LhxI2+99RbPPfcc+/fvByAuLo6bb76ZuLg4IiIiiIqKqjM+EREREZGm1ixnbtq1a0dMTAyrVq2irKyM0tJSnJycaNu2LQCDBg0CIDs7m6FDhwIwbNiwKn14eHgAsHv3bnJyclixYgUVFRW0adMGFxcXunfvzuzZs7nzzjsZP348Dg4OF7TVpn///hgMBtq3b0/v3r2xtbWlXbt27Nq1i71793Lo0CH8/f2BM/cD/fLLL3Tp0oXIyEiWL19OQUEB/fr1A8DZ2dk8E9KxY0cKCwvrvEYZGRnMmzcPgOuuu45XXnmF7OxsBg4ciI2NDb1796Zz5871ut5nHTp0iF69etGiRQtatGhhjm/37t3k5eXx3nvvAXD69Om/1K9c+rKysigpKSErK8vSoUgjUo6tm/Jr/ZRj66b81k+zLG7i4uJwdXXl+eefZ+/evYSGhlZZpmUymcw/z7ZXVlZW6cPe3t78c+nSpXTo0KHK9pUrV5KZmUlycjKJiYmsXr262raa2NnZVfu7yWTC3t6eW2+9laeffrrKMfPnz+emm25i8uTJpKWl8cknnwBga2tbZb+z51cbg8Fg3s9oNJqvw/nXyWAw1Hr8WWdnqc6/nufHYW9vT3h4ONdee22dcYl1cnd3Jysrq8oMqVgf5di6Kb/WTzm2bsrvOenp6TVua5bL0vLz8+nWrRsA27Zto2XLlhQWFlJQUIDRaGTXrl0A9OjRw7z0aseOHdX2NXDgQLZt2wbA9u3bSUpK4siRI6xdu5Z+/foREhLCiRMnqm27WP369WPHjh2cPn0ak8lEZGQkJSUl5vMymUx8+OGHGI3Gix5jwIAB5nP++uuv6d+/P127diUzMxOTyUR2dja//vprlWNsbGzMhYyzszO5ubnAuT+Qbt26kZ2dTVlZGUVFReZre/41/Omnn3jjjTcuOm4RERERkcbSLGduxo0bR0hICGlpafj6+pKcnExAQABTpkyhc+fOuLm5ATB+/HgCAgKYOnVqlQcKnC8wMJCwsDBSUlIwGAwsWrSIDh06sHv3blJTU7G3t2fChAnVtl2sTp064e/vj6+vL7a2tnh5eeHo6MjEiRN55pln6Ny5M35+foSHh/PFF19c1BhBQUEsWLCAt99+G3t7exYuXIirqyvdu3fHx8eHvn370rNnzyqzQj179uT7779n4cKFTJ06lVmzZrFnzx6GDBkCgIuLC+PHj2fSpEl06dKFAQMGADBlyhTmz5/PAw88QGVlJQsWLLjoayMiIiIi0lgMpvqsgZJLQllZGampqYwfP55Tp04xevRoPvzwwyrL5hpTenp6jUWmXPo0HW79lGPrpvxaP+XYuim/59T2nbNZztw0FxEREWRnZ1/QHhsbi6OjY6ONu2fPHp5//vkL2kePHs0DDzxQ43EODg7s3buXtWvXYmNjw2OPPdZkhY2IiIiIiKXpm28tIiIiLDKuh4cH8fHxF3VseHh4A0cjIiIiInJpaJYPFBAREaE96usAACAASURBVBEREfmrVNyIiIiIiIhVUHEjIiIiIiJWQcWNiIiIiIhYBRU3IiIiIiJiFfS0NGlQ3UNTLB2C1OHg4rssHYKIiIhIo7jkZ26ioqJISEio0lZcXMzIkSMtFFHTGTlyJMXFxTVuT0tLA8689GnZsmUAfPjhh5SVldWr/48//pjQ0NC/H6iIiIiISBO45Isbqdnrr78OgLu7O0FBQQCsWbMGo9FoybBERERERBpFs1+WVlRUxLx58zh16hQlJSWEh4eTk5PDypUrcXV1xdHRETc3N4qKipgzZw6lpaUMHjzYfPyoUaPw9PSkbdu2eHt7s2DBAoxGI7a2tkRGRtKpUyciIyPJyMigoqKCyZMn4+3tXW1bdRISEvj666/Jz89n//79zJ07l+TkZLKzs3nhhRcYOHAg69evJykpCRsbG7y8vJg2bRq///47TzzxBADl5eVERUXRrVs3br/9dry8vNi1axctW7bk9ddfx8am9hr0999/JywsDKPRiMFg4Nlnn+WDDz7ghx9+IDAwED8/P9avX8/IkSP59ttvefjhh3n22WeZN2+eedbL29ubZcuWUVxcTEhICFdccQXdunUzj1HdOYiIiIiINCfNvrjJzc3Fx8cHLy8vtm/fTmxsLHv37mXz5s20atXKXHQkJibi5uZGWFgYqamppKScufejvLwcT09PPD09CQsLY9q0adxwww18+umnxMTE8Pjjj/PJJ5+wbds2jEYj7777LidOnLigrTYHDx5kw4YNvPPOO7z22mts2bKFhIQEkpOTadOmDWlpaWzcuBGAyZMnc+edd/LHH38QEBDA9ddfz6ZNm9iwYQOhoaEcPnyYcePGERISwv33388PP/yAu7t7reMvXbqU++67jzFjxpCWlkZ0dDRRUVHExsYSHR3Njh07ABg/fjzLli0jNjaW/Pz8avuKiYkhMDAQLy8v/v3vfwNw+PDhas+hU6dO9cyiNCdZWVkXdVxJSclFHyuXBuXYuim/1k85tm7Kb/00++KmXbt2xMTEsGrVKsrKyigtLcXJyYm2bdsCMGjQIACys7MZOnQoAMOGDavSh4eHBwC7d+8mJyeHFStWUFFRQZs2bXBxcaF79+7Mnj2bO++8k/Hjx+Pg4HBBW2369++PwWCgffv29O7dG1tbW9q1a8euXbvYu3cvhw4dwt/fHzhzP9Avv/xCly5diIyMZPny5RQUFNCvXz8AnJ2d6dOnDwAdO3aksLCwzmuUkZHBvHnzALjuuut45ZVX6nVtq5OdnW2+ptdddx2fffZZjeeg4ubSVFexXJOsrKyLPlYuDcqxdVN+rZ9ybN2U33PS09Nr3Nbsi5u4uDhcXV15/vnn2bt3L6GhoVWWaZlMJvPPs+2VlZVV+rC3tzf/XLp0KR06dKiyfeXKlWRmZpKcnExiYiKrV6+utq0mdnZ21f5uMpmwt7fn1ltv5emnn65yzPz587npppuYPHkyaWlpfPLJJwDY2tpW2e/s+dXGYDCY9zMajXUuYzt7zPnKy8vN453ddvY61nQOIiIiIiLNSbN/oEB+fr753o9t27bRsmVLCgsLKSgowGg0smvXLgB69OhBRkYGgHkZ1p8NHDiQbdu2AbB9+3aSkpI4cuQIa9eupV+/foSEhHDixIlq2y5Wv3792LFjB6dPn8ZkMhEZGUlJSYn5vEwmEx9++OHfusl/wIAB5nP++uuv6d+/P1B9YWQwGKioqMDZ2Znjx49jMpnIzc3l8OHDQPXXsaZzEBERERFpTpr9zM3Z+0/S0tLw9fUlOTmZgIAApkyZQufOnXFzcwPO3E8SEBDA1KlTqzxQ4HyBgYGEhYWRkpKCwWBg0aJFdOjQgd27d5Oamoq9vT0TJkyotu1iderUCX9/f3x9fbG1tcXLywtHR0cmTpzIM888Q+fOnfHz8yM8PJwvvvjiosYICgpiwYIFvP3229jb27Nw4ULgzPKj++67z/zgAjizZO+BBx5g7dq13HDDDUyYMIE+ffqYpzlnz57N/PnzWbt2LV27dsVoNNZ4DiIiIiIizYnBVJ91TyL1kJ6eXmNhKZc+rfW1fsqxdVN+rZ9ybN2U33Nq+87Z7GdumouIiAiys7MvaI+NjW3UWYw9e/bw/PPPX9A+evRoHnjggUYbV0RERETkUqPipp4iIiIsMq6Hhwfx8fEWGVtERERE5FLS7B8oICIiIiIiUh8qbkRERERExCqouBEREREREaug4kZERERERKyCihsREREREbEKelpaM5CcnExISAiff/45bdq0Yfny5SQlJeHq6kp5eTldu3YlNDSUNm3asGPHDh577DHc3NyorKzk8ssvZ+7cufTt2xeAfv36MWjQIADKy8tp3749CxcuxNnZGT8/P06dOsXll19uHvv+++9n7NixvP/++6xZswYHBweKi4uZNm0ad999N0ajkWeeeYYff/wRW1tbbG1tWbx4MZ06dar2XLqHpjT+BZOLdnDxXZYOQURERKTRqLhpBpKTk+natSsffPABkydPBsDf358pU6YAkJCQwKOPPsqbb74JwLBhw1i2bBkAmZmZBAUFsWHDBjp06ICzs3OVR0cvX76cuLg4AgICAFi0aBFXX311lfHLysp47rnnSEpKwtnZmby8PGbMmMGoUaNISUnBxsbGPPa7777Lhg0bePzxxxv3ooiIiIiI/EValmZhJ06cYM+ePYSGhpKSUv2sh7e3N5dddhm7d+++YFu/fv2YMGEC7777brXHenh4cOjQoVpjKCkp4dSpU5SVlQHQpk0bEhIScHBwoKCggOLiYvO+9957rwobEREREWmWVNxYWFpaGrfeeis333wzBw8e5OjRo9Xu179/f3766ae/tM1kMrF161bzkrWatGrVikmTJjFq1Cjmzp1LQkICJSUlANxzzz3s37+fO+64g4ULF/LNN9/8xTMUEREREWkaWpZmYcnJyTz66KPY2tpy5513kpqaWu1+xcXF2Nra1rmtqKgIPz8/AH766SfGjh1rXt4GMH/+/Cr33CxcuJCuXbsyd+5cfHx8+Pzzz9myZQuxsbG8++67tG7dmnfffZf09HS++OIL5s2bx4QJEwgKCmqoSyBNKCsr66KPLSkp+VvHS/OnHFs35df6KcfWTfmtHxU3FvT777/z3XffsXjxYgwGAyUlJbRs2ZJbbrnlgn0zMjK4//77OXnyZLXb3N3dAarccxMVFYWrqyt2dufSXN09N3DmH0yXLl2YPHkykydPxs/Pjz179nDNNddgZ2fHkCFDGDJkCD4+Pvj5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TYSHh5tnZAoLC6msrGTGjBksW7aMvLw84My9OS+//DL+/v4ADB8+nC1btgBnCqRNmzbh6ekJnLlJ/uwTwBITE4mOjiYl5cIne02aNImdO3eyb9++Rj3Hs3bu3MmwYcOq3fbzzz/TsmVLbG1t693ftGnT+OOPP9i8eXO9j5k7dy5Lliwxf546dSpRUVGcPn0agGPHjrF69eoqs0YiIiIiIs1NnTM3td1431i8vb05cOAAPj4+XH755eZlZLfccgv5+flMnjwZJycnDAYDDz30kLnYCggIIDIyEl9fXyoqKhg2bBiTJk1i3759ODg40Lt3b/MYQ4YM4fjx4/z2229Vxrazs+Nf//oXERER5qfC/XlZWs+ePYmIiGiQc/3mm2948MEHzZ/PX9JmNBrN7xeqL4PBQFRUFJMmTar3jNt1111Hu3btzJ/HjBnDqVOnmDRpEi1atMBgMPDEE0/QtWtX4EwxtGjRojofWiAiIiIi0pQMptpuWAH8/PyqfaTw2rVrGy2o+ggPD6dPnz7mZWVieenp6QwePNjSYUgj0XS49VOOrZvya/2UY+um/J5T23fOej0t7azy8nLS09MpLCxsuOguUkBAAHPmzCEtLY1XXnmFVq1aNen4gYGBnDx5skqbs7MzK1asaNI4avPWW2+RnJx8QXtdD0QQEREREbkU1VncuLm5Vfns7u7O9OnTGy2g+urYsSPvvPOOxcaPjo622Nj1NXHiRCZOnGjpMEREREREmkSdxc3ZxxCflZuby7FjxxotIBERERERkYtRZ3GTn59f5bOLiwuvv/56owUkIiIiIiJyMeosbmxsbHj00UertC1evJjQ0NBGC0pEREREROSvqrG42bp1K8nJyXzzzTf88MMP5vby8nK+//57FTciIiIiItKs1FjcjBo1ir59+/LMM89UedyyjY1Nvd6dIiIiIiIi0pRqXZbWpUsXXnvtNfbv38+JEycAKCsrw9/fn6SkpCYJUC4t3UNTLB2CAAcX32XpEERERESaXL3ec3PgwAEOHDiAh4cHGRkZzJgxoyliu2RERUXh5uaGt7e3ua24uJixY8fy0UcfWTCyv+frr7/mqquuom3btpYORURERESkTjZ17fDTTz+xbt06evbsyauvvso777xDdnZ2U8QmFrZ582aOHz9u6TBEREREROqlzpmbiooKioqKAMjLy+PKK69k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17ehQ6h32dnZhjwvOUc5Njbl1/iUY2NTfs/JyMiocZuKm6vg/PtdzurcuTNZWVnccccd9rYjR47Qrl07TCYTJSUl3HDDDQQGBhIYGEiPHj1ISUm5aHFT3T031cnKyrqkD0Tv3r05fPgwFRUV9qLIw8OD1q1b13kMEREREZFrSffcXCPjx49n/fr1/PTTTwBYrVYWLlzIxIkTqaysZOTIkRw8eNDe/5dffuGmm26ql2P/9NNPrFmzhkcfffSS9mnZsuVFZ3tERERERK4Xmrm5Rjp27MiSJUuYNWuW/RHRf/7znxk9ejQAr732GtHR0fb+N910E/PmzbvouL9flnb//fczYMAA+9K4srIyKioqmDdvHh07dqx1rLP33MCZ4uvll1++5PPU+11EREREpKGYbDabraGDEGPIyMigV69eDR2GXCVa62t8yrGxKb/Gpxwbm/J7Tm3fOTVz8wczZcoUfvvttyptLVq0YNWqVQ0UkYiIiIhI/VBx8wezYsWKhg5BREREROSq0AMFRERERETEEFTciIiIiIiIIai4ERERERERQ1BxIyIiIiIihmCoBwosWrQIb29vgoKC7G0nT55k5MiRfPLJJw0YWf3p27cv6enpl7TPyy+/TGhoKK1bt+a7777jzjvvrNN+QUFBLF++/JJeJuppSbmk2IxG7/kRERERaTiaufkDeP755/Hw8GDv3r18/fXXDR2OiIiIiMhV0ahmboqLi5kxYwanTp2ipKSEuXPnkpuby+rVq2nfvj3NmjXD29ub4uJipk6dSmlpaZUX/Nxzzz0MHDgQV1dXgoKCeP7557FarTg6OrJgwQI6duzIggULyMrKoqKigvHjxxMUFFRtW3WSkpLYsWMHx48f58CBA0RERJCcnExOTg5LliwhICCAmJgYdu/eTWlpKePHj2fs2LE89thjRERE4O/vz+OPP86UKVPo2bNnrddi3759zJ8/HwcHB5ydnVm4cCHOzs7MmjWLn3/+mR49erBlyxa++OILQkJCmDt3LvPnz6e4uBhPT0927drFvffey+DBg/n000/Ztm0bCxcuZMGCBezatQsvLy+sVisA+fn51V4rEREREZHrSaMqbgoKChg7diyBgYGkpaURFxfHnj172LBhA61atbIXHRs3bsTb25uoqCg2b95MSsqZpVLl5eUMHDiQgQMHEhUVxeOPP07//v35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TVFRER999BEmk4nMzEymTJnCli1b2LNnD2vWrCEhIQEXFxeKi4uZNGkSrVq1ol+/fgDs3LmTI0eO4O7uXmXcNWvW4O/vT1hYGAArV65k06ZNBAcHM3r0aPLy8ggPD7/gEc8xMTHceuutwJni8KWXXiIxMbHWa1lcXMysWbOIjY3l1ltvxWq1Mm3aND744APCwsIICwurttA8q7KykqlTp2KxWOznlZCQwNy5c1m8eDEArVq1IjExkSeffLLWWEREREREGlKD3HPTrFkzHn74YeLj42vt5+DgwLPPPkt2djb5+fmXdIxOnTpRXFxMRUVFjX3+9re/MXPmTEwmEwA9e/Zkw4YNNGnShLVr1xIeHo6LiwsALVq0YPr06axZs8a+/9SpU1m2bNkF4xYVFXHixAn7788++yzBwcGXFH9AQAA//vjjRftt2rSJIUOG2Isis9nMokWLGDNmTJ2O89VXX+Hp6WkvbAAee+wxdu/eza+//grAI488wqZNmygsLLykcxARERERuZYa7J6bcePG8eCDD/LII4/U2s/BwYGuXbty6NChSxp/x44dtGvXDkdHx2q3nzhxgqZNm9KqVasq7Wd/P3ToEL6+vlW2+fr6kpuba/990KBBJCQk8MMPP+Dj42NvDw4O5vHHH+eLL77gzjvv5L777quyvS62bt1K165dL9rv0KFD+Pv7V2mrbjastv1/fxyTyYS3tzeHDx8GoGnTpjz22GO89dZbVZbhNQbZ2dkNHYJhlJSU6HoanHJsbMqv8SnHxqb81s01L27OzpI0adKEp556itjY2Isudzp58iQODmcmmTZv3kxWVpZ92/Dhw+0F0uuvv05CQgLHjx+nefPmvPbaa7WOW9usjslkorKyskqbzWazx3HWjBkzWLJkCatXr7a33XzzzWzdupX09HS++uorJk6cyKxZs3jwwQdrjWf27Nk0b96c//73v9x0003ExMTU2t9kMmEymWo9j4upaX+bzValMBw9ejRjx47lyJEjl32shvD7AlUuX3Z2tq6nwSnHxqb8Gp9ybGzK7zkZGRk1brtqy9LatGlDUVFRlbZjx47Rrl07++/Dhw9n//799hmC6pSXl3PgwAH7zfAjRoxg3bp19v/On/mZPn0669atY8mSJVRUVODl5VXjuC1btqS8vJyjR49Wad+7dy82m43OnTtXKaLgzP9Ut9xyS5U2f39/nJ2dSUtLs7eVlJRgNpu58847sVgsxMbGsnHjxhpjOSsmJoZ169ZhsVhwcnLCzc0NgNatW19wLa1WK82bN6dz587s2bOnyrZjx47VuQip7jxtNhsHDx7E09PT3ubg4FDjMjwRERERkevBVStuPD09+eWXX+z3jRw7doz09HR69uxZpV9ERASvv/56jePExsYyaNAg2rRpU+dj+/j40K1bN/73f/+31n7BwcHExMRQXl4OnKkCLRYLZWVlhIaGEhsby7Fjx4AzN+4vXbqURx999IJxIiIieOONN+y/P/bYY/zrX/+y//7LL7/g4eFR5/gHDx5MWVkZn332GQD9+vUjJSXFHmdycjK9evUCYOTIkXz22Wfs3r0bgLKyMqKjo6scvzYDBgwgLy+Pzz//3N62Zs0aevXqZb/f6Ky77rqLX375hX379tX5XERERERErpWrtizNbDazZMkS5s6di81mw2azMWfOHNq2bVulX9++fS9oO7u8rLCwkO7duxMVFWXf9vtlaUC1DyaYNm0aDz74IMOGDcPV1bXaGMPCwnjrrbd44IEHuPHGG2nZsiWrVq2iadOmdO/enYiICMLCwuyPgg4NDa320dKenp507dqVgwcPAmdmYObPn8+bb76Jo6MjrVq1Ijo6uk7X7azZs2czefJk+vXrx8CBA8nJySE4OBgnJyfatm3LvHnzAHB2diYuLo4XXniBkpISHB0dGTlyJGPHjq3TcRwcHIiPj+eFF15g2bJl2Gw2/Pz8mDNnTrX9Z86cWevYeq+MiIiIiDQUk81mszV0EGIMGRkZ9hklMR6t9TU+5djYlF/jU46NTfk9p7bvnA32tLRrZfv27VUe33xWaGgoQ4cOvfYBiYiIiIjIVWH44mbIkCEMGTKkocMQEREREZGrTMvSpN7U9lg+EREREZH6UtOyNBU3IiIiIiJiCFftUdAiIiIiIiLXkoobERERERExBMM/UECuvldeeYXvv/8ek8lEVFQU/v7+DR2SXIb09HSee+45vL29Abj11lsJCwvjL3/5CxUVFbRr147Fixfj5OTEP/7xDxITE3FwcOChhx6q83uVpGHs37+fZ599lkcffZQJEybwn//8p855tVqtWCwWfv75ZxwdHYmJibmklxLLtfH7HFssFvbu3Wt/GfMTTzzBXXfdpRw3Uq+++ioZGRmUl5fz1FNPcfvtt+szbDC/z/Enn3yiz/DlsolcgfT0dNuTTz5ps9lstoMHD9oeeuihBo5ILtc333xjmzp1apU2i8Vi27x5s81ms9lee+012/r1620nT5603XPPPbaioiLb6dOnbffdd5/t+PHjDRGy1MHJkydtEyZMsM2ZM8e2bt06m812aXlNSkqyRUdH22w2m+3LL7+0Pffccw12LlK96nIcGRlp++STTy7opxw3PmlpabawsDCbzWazHTt2zDZo0CB9hg2muhzrM3z5tCxNrkhaWhqBgYEAdOnShd9++43i4uIGjkrqS3p6uv1R6oMHDyYtLY3vv/+e22+/nZYtW9KsWTN69uxJZmZmA0cqNXFyciIuLg43Nzd726XkNS0tzf5OsP79+yvX16Hqclwd5bhx6t27N8uWLQOgVatWnD59Wp9hg6kuxxUVFRf0U47rRsWNXJGjR4/SunVr++9t2rShoKCgASOSK3Hw4EGefvppxo8fz9dff83p06dxcnICwNXVlYKCAo4ePUqbNm3s+yjn17cmTZrQrFmzKm2Xktfz2x0cHDCZTJSVlV27E5CLqi7HAO+++y6hoaFERERw7Ngx5biRcnR0pHnz5gB8+OGHDBw4UJ9hg6kux46OjvoMXybdcyP1yqYnizdanp6eTJkyheHDh/Pvf/+b0NDQKn85qim3ynnjdql5Vb4bh1GjRuHi4oKvry/vvPMOK1asoEePHlX6KMeNS2pqKh9++CEJCQncc8899nZ9ho3j/BxnZWXpM3yZNHMjV8TNzY2jR4/af//vf/9Lu3btGjAiuVzt27dnxIgRmEwmOnXqRNu2bfntt98oKSkBID8/Hzc3t2pzfrHlMHJ9ad68eZ3z6ubmZp+Zs1qt2Gw2+1+M5frVr18/fH19Abj77rvZv3+/ctyIffnll7z11lvExcXRsmVLfYYN6Pc51mf48qm4kSsyYMAAtm3bBsDevXtxc3OjRYsWDRyVXI5//OMfxMfHA1BQUMCvv/5KUFCQPb///Oc/+Z//+R8CAgLYs2cPRUVFnDx5kszMTO64446GDF0uUf/+/euc1wEDBrB161YAPv30U/r27duQoUsdTZ06lX//+9/AmXusvL29leNG6sSJE7z66qu8/fbb9idn6TNsLNXlWJ/hy2ey/dHnruSKLVmyhJ07d2IymXjhhRfw8fFp6JDkMhQXFzNz5kyKioqwWq1MmTIFX19fIiMjKS0tpWPHjsTExGA2m9m6dSvx8fGYTCYmTJjAn//854YOX2qQlZXFokWLOHLkCE2aNKF9+/YsWbIEi8VSp7xWVFQwZ84cDh8+jJOTEwsXLuRPf/pTQ5+WnKe6HE+YMIF33nmHG264gebNmxMTE4Orq6ty3Aj9/e9/JzY2Fi8vL3vbwoULmTNnjj7DBlFdjoOCgnj33Xf1Gb4MKm5ERERERMQQtCxNREREREQMQcWNiIiIiIgYgoobERERERExBBU3IiIiIiJiCCpuRERERETEEFTciIiIiIiIIai4ERERERERQ1BxIyIiIiIihvD/ACEJnfS8s1KRAAAAAElFTkSuQmCC\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"NU1W8n0Zo6ua"},"source":["lgb_preds_t = np.expm1(lgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = lgb_preds_t"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"j7csLiM_pIEW","executionInfo":{"status":"ok","timestamp":1603293231332,"user_tz":-330,"elapsed":1425,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"0c3c71a8-591c-4325-a878-fa6757d59379","colab":{"base_uri":"https://localhost:8080/","height":419}},"source":["sol_fl"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>11.748779</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>77.182706</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>66.962653</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>29.291004</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>17.567383</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>68715</th>\n","      <td>107.667101</td>\n","    </tr>\n","    <tr>\n","      <th>68716</th>\n","      <td>122.275991</td>\n","    </tr>\n","    <tr>\n","      <th>68717</th>\n","      <td>5785.497510</td>\n","    </tr>\n","    <tr>\n","      <th>68718</th>\n","      <td>83.787301</td>\n","    </tr>\n","    <tr>\n","      <th>68719</th>\n","      <td>616.275258</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>68720 rows × 1 columns</p>\n","</div>"],"text/plain":["       TARGET(PRICE_IN_LACS)\n","0                  11.748779\n","1                  77.182706\n","2                  66.962653\n","3                  29.291004\n","4                  17.567383\n","...                      ...\n","68715             107.667101\n","68716             122.275991\n","68717            5785.497510\n","68718              83.787301\n","68719             616.275258\n","\n","[68720 rows x 1 columns]"]},"metadata":{"tags":[]},"execution_count":101}]},{"cell_type":"code","metadata":{"id":"ievU_akfpPJ4","executionInfo":{"status":"ok","timestamp":1603293238400,"user_tz":-330,"elapsed":1240,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"40f19261-5074-47bb-f15f-134e0f811634","colab":{"base_uri":"https://localhost:8080/","height":49}},"source":["sol_fl[sol_fl['TARGET(PRICE_IN_LACS)']<0]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["Empty DataFrame\n","Columns: [TARGET(PRICE_IN_LACS)]\n","Index: []"]},"metadata":{"tags":[]},"execution_count":102}]},{"cell_type":"code","metadata":{"id":"OVjEACBvpRRx"},"source":["sol_fl.to_csv(\"kFold_lgmb_hyper.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"X0iyzCguqoyw"},"source":["### Tuning Learning Rate"]},{"cell_type":"code","metadata":{"id":"41a_gRa_qrD2","executionInfo":{"status":"ok","timestamp":1603295176025,"user_tz":-330,"elapsed":26940,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"654f04e1-2695-43bd-b837-bc6573da051c","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = LGBMRegressor(n_estimators = 5000,\n","                        learning_rate = 0.31,\n","                        colsample_bytree = 0.76,\n","                        metric = 'None',\n","                        )\n","fit_params = {'verbose': 300, 'early_stopping_rounds': 300, 'eval_metric': 'rmse'}\n","\n","lgb_oofs, lgb_preds, fi = run_gradient_boosting(clf, fit_params, trn_proc, test_proc, features)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","Training until validation scores don't improve for 300 rounds.\n","[300]\tvalid_0's rmse: 0.290023\n","[600]\tvalid_0's rmse: 0.289816\n","Early stopping, best iteration is:\n","[361]\tvalid_0's rmse: 0.289092\n","\n","AV metric score for validation set is 0.2890920668487087\n","\n","------------- Fold 2 -------------\n","Training until validation scores don't improve for 300 rounds.\n","[300]\tvalid_0's rmse: 0.302513\n","[600]\tvalid_0's rmse: 0.302454\n","Early stopping, best iteration is:\n","[370]\tvalid_0's rmse: 0.301219\n","\n","AV metric score for validation set is 0.30121935648046144\n","\n","------------- Fold 3 -------------\n","Training until validation scores don't improve for 300 rounds.\n","[300]\tvalid_0's rmse: 0.30933\n","[600]\tvalid_0's rmse: 0.309395\n","Early stopping, best iteration is:\n","[395]\tvalid_0's rmse: 0.30835\n","\n","AV metric score for validation set is 0.30834969713915206\n","\n","------------- Fold 4 -------------\n","Training until validation scores don't improve for 300 rounds.\n","[300]\tvalid_0's rmse: 0.294231\n","[600]\tvalid_0's rmse: 0.290485\n","[900]\tvalid_0's rmse: 0.290557\n","Early stopping, best iteration is:\n","[790]\tvalid_0's rmse: 0.289519\n","\n","AV metric score for validation set is 0.2895193369286308\n","\n","------------- Fold 5 -------------\n","Training until validation scores don't improve for 300 rounds.\n","[300]\tvalid_0's rmse: 0.323488\n","[600]\tvalid_0's rmse: 0.320392\n","[900]\tvalid_0's rmse: 0.3204\n","Early stopping, best iteration is:\n","[669]\tvalid_0's rmse: 0.320111\n","\n","AV metric score for validation set is 0.32011143827159055\n","\n","\n","AV metric for oofs is 0.3018868513697917\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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zs62dAhWpbS0VNfEirXG/Ki4aaU6depETEwMa9asoby8nLKyMpycnOjYsSNAtSVmgwcPrrWwERERkYZzd3e3dAhWJTs7W9fEirXU/GRkZNS6TffctFLx8fG4urqyadMmIiIiMJlM2Nj8N90mk8n82d7e3hIhioiIiIg0KhU3rVRBQQG9evUCYPv27bRt25aioiIKCwsxGo3s3r3bwhGKiIiIiDQuLUtrpe677z5CQkJIT0/H19eXlJQUAgICmDZtGt27d8fNza3BfX322WesWbOGgwcPkpWVRUJCAmvXrq1xXz3f33q11KnnS4XyY72UG+um/IjIuVTctFIeHh58+OGH5u+33XYbAD4+Phfc16233sqtt97aWKGJiIiIiDQJFTdiFhgYyMmTJ6u1OTs7s2rVKgtFJCIiIiLScCpuxCw6OtrSIYiIiIiIXDQ9UEBERERERFoFFTciIiIiItIqqLgREREREZFWQcWNiIiIiIi0CnqgQBM5evQoQUFBJCYmVmtPTk7mrbfewt7eHqPRyOzZs7njjjsA8PPzY+DAgYSGhpr39/PzIyEhAYCkpCQSEhJwcHCgtLSUe++9l4cffti8X3h4OF988QWff/45hYWFHDt2zPw+mzVr1nDLLbewc+dOc987d+5kw4YNrFixgtDQULKysnBxccFoNDJo0CDmz5/PZZddRmJiIsuXLze/FBTgyiuv5IUXXjjvvHuHpjbOBZQmctDSAUidlB/rpdxcKL33TEQsQcVNM9qzZw9xcXGsXbsWFxcXiouLefTRR2nXrh2jRo0C4LvvvuO3336je/fu1Y7NyMhg06ZNxMXF4ezsTHFxMY888gj9+vXj5ptvNu83a9YsZs2aVa1waajg4GDGjBlDVVUVMTExhIWF8corrwBw1113ERIS0ghXQURERESkaWhZWjNat24dQUFBuLi4AGfeIRMcHExcXJx5n7lz57J8+fLzjl2/fj1z587F2dnZfOzGjRurFTaNxcbGhieeeILs7GyOHTvW6P2LiIiIiDQFFTfN6ODBg7i7u1drc3d3Jzc31/x99OjRHDt2jP3795937NVXX12tzd7evslitbGxYcCAARw8qKUYIiIiItIyaFlaMzIYDFRVVVVrM5lM2NhUrzHnz5/PSy+9xOrVq81tNjY2VFZWAmeWty1btoyysjIGDBhAREREk8RbUlJi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Cgro1asXANu3b6dt27YUFRVRWFiI0Whk9+7dAPTp04fMzEzgzFPIGlP//v354osvAEhNTWXHjh0UFBTQtWtX7O3t+fjjj6msrKS8vLzRxvT392flypXk5+cDZ2ZdXnnlFR5++GGKi4sZP348f/75p3n/P/74gx49ejTK2Pv27WPbtm088MADDT7mhx9+oE+fPo0yvoiIiIhIc2nWmZv77ruPkJAQ0tPT8fX1JSUlhYCAAKZNm0b37t1xc3MDYOLEiQQEBDB9+vRqDxRoDAsXLiQ8PJzY2FjatGnDyy+/jK2tLbGxsUybNg0vLy9uvfVWIiIiGm3Ma6+9lnnz5jFr1izzo6D9/f3NS94iIiIICgrC3t6eiooKPDw8uPfee+vs83+XpQE8/PDDODs7m5fHnT59GkdHR5YtW4aTk1Od/Z295+asxjx/EREREZHmYDDVt9ZKpIEyMjIavRiVxtNSp54vFcqP9VJurJvyY92UH+vWUvNT12/OFvmem48//pi4uLjz2v39/bn99tubdOzAwEBOnjxZra2um/mtRXl5OTNnzjyvvU+fPixatMgCEYmIiIiINK4WWdzcdttt3HbbbRYZOzo62iLj/lUODg4NfgCBiIiIiEhL1KwPFBAREREREWkqKm5ERERERKRVUHEjIiIiIiKtgoobERERERFpFVTciIiIiIhIq9Ain5Ym1qt3aKqlQ5A6HbR0AM3m0NK7LR2CiIiINDPN3FyioqKiSExMbNC+FRUVhISEMHXqVB588EG+++67Jo5OREREROTCaeZG6pWUlMRll13Gpk2bOHDgAAsWLGDz5s2WDktEREREpBoVN61UcXEx8+fP59SpU5SWlhIeHk5ubi6rV6/G1dUVR0dH3NzcSExM5IsvvuDPP//klVdewdXV9by+7r33Xu655x4AOnTowIkTJ5r7dERERERE6qXippXKy8vDx8cHLy8vduzYQWxsLPv27WPLli20a9cOb29v876///47b7/9NgaDoca+7O3tzZ/j4+PNhY6INcvOzrZ0CBektLS0xcV8qVBurJvyY92UH+vWGvOj4qaV6tSpEzExMaxZs4by8nLKyspwcnKiY8eOAAwdOtS87+DBg2stbM61YcMGsrKyeP3115ssbpHG4u7ubukQLkh2dnaLi/lSodxYN+XHuik/1q2l5icjI6PWbXqgQCsVHx+P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R/fu3fHz8yM8PJyvvvrqosYICgpi4cKFvPvuu9jb27N48WJcXV3p3bs3Pj4+DBgwgL59+1abFerbty8//vgjixcvZvr06cyePZu9e/cyfPhwAFxcXJg4cSJTpkyhR48eDB48GIBp06axYMECHnroIaqqqli4cOFFXxsRERERkaZiMDVkDZS0COXl5aSlpTFx4kROnTrF+PHj+fjjj6stm2tKGRkZtRaZYnktder5UqH8WC/lxropP9ZN+bFuLTU/df3mtMqZG2sRERFBTk7Oee2xsbE4Ojo22bh79+7lxRdfPK99/PjxPPTQQ7Ue5yyJlaIAACAASURBVODgwL59+1i3bh02NjY8+eSTzVbYiIiIiIhYmn751iEiIsIi43p4eJCQkHBRx4aHhzdyNCIiIiIiLYNVPlBARERERETkQqm4ERERERGRVkHFjYiIiIiItAoqbkREREREpFVQcSMiIiIiIq2CnpYmjap3aKqlQ7ikHVp6t6VDEBEREbGYFj9zExUVRWJiYrW2kpISxo4da6GIms/YsWMpKSmpdXt6ejpw5gVNK1asAODjjz+mvLy8Qf1/+umnhIaG/vVARURERESaQYsvbqR2b775JgDu7u4EBQUBEBcXh9FotGRYIiIiIiJNwuqXpRUXFzN//nxOnTpFaWkp4eHh5Obmsnr1alxdXXF0dMTNzY3i4mLmzp1LWVkZw4YNMx8/btw4PD096dixI97e3ixcuBCj0YitrS2RkZF069aNyMhIMjMzqaysZOrUqXh7e9fYVpPExES+/fZbCgoKOHDgAPPmzSMlJYWcnBxeeuklhgwZwoYNG0hOTsbGxgYvLy9mzJjBH3/8wdNPPw1ARUUFUVFR9OrVi9tvvx0vLy92795N27ZtefPNN7GxqbsG/eOPPwgLC8NoNGIwGHj++ef56KOP+OmnnwgMDMTPz48NGzYwduxYvv/+ex599FGef/555s+fb5718vb2ZsWKFZSUlBASEsIVV1xBr169zGPUdA4iIiIiItbE6oubvLw8fHx88PLyYseOHcTGxrJv3z62bNlCu3btzEVHUlISbm5uhIWFkZaWRmrqmXs/Kioq8PT0xNPTk7CwMGbMmMGNN97I559/TkxMDE899RSfffYZ27dvx2g08v7773PixInz2upy6NAhNm7cyHvvvccbb7zB1q1bSUxMJCUlhQ4d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wLRp0+jevTtubm4ATJw4kYCAAKZPn17tgQLnCgwMJCwsjNTUVAwGA0uWLKFLly7s2bOHtLQ07O3tmTRpUo1tluLv709YWBj+/v6YTCaeffZZOnXqxD333IOPjw99+/bFw8Oj2oxQ586dMRqNBAUFsXjxYlatWoWfnx+jR4/GYDBgY2NDYGDgeddw/PjxfPPNN0yZMoXKykoCAwMtddoiIiIiIrUymBqyBkpajMTERO655x7s7OyYMGECa9asoWvXrs0ydkZGRq0FpFheS516vlQoP9ZLubFuyo91U36sW0vNT12/OVvszI21iIiIIOf/t3fvYVWV+f//nxvcaKKGouhIGGoUKIGH1Evtq5lYajkaZmYIdsAOHkg8DFtSY8xC0zLFtEIY0ewzU0k5gof5YOc+RIqW4kUeEGvQYjAlRAU2sH9/+HOPJCAmujeb1+O6vHDf6173oICxrgAAIABJREFUeq/1Zl3XfnOvQ07OZe3x8fE0a9bsD4154sQJoqKiLmvv06cPERERta578uRJHnnkEVxcXBg1atQNK2xERERERGxNxc01qumxyteiY8eObNiw4Q+t+/TTT/P000/Xc0QiIiIiIvavwT5QQERERERE5FIqbkRERERExCGouBEREREREYeg4kZERERERByCihsREREREXEIelqa1CtvU6qtQ2jQji1+wNYhiIiIiDRYDjtzs2TJEpKTk6u0nT17lnvvvddGEdW/fv361bp8+/btAHzxxRe89957Vdrq4t133yUuLu6PBygiIiIicgM5bHHT2JWVlbFu3ToABg0axGOPPQbAO++8Y8OoRERERESunwZ7WVpxcTGzZs3i3LlzlJSUMH/+fHJzc1m7di3t27enWbNm+Pj4UFxczPTp0yktLaV3797W9e+77z4GDRqEu7s7wcHBvPDCC5jNZpydnVm0aBEdO3Zk0aJFZGVlUVFRwYQJEwgODq62rTrJycns2rWL06dPc/jwYSIjI0lJSSEnJ4dly5YRGBhIbGws+/bto7S0lAkTJjBu3DieeOIJIiMjCQgI4Mknn2TatGn06tWr1mNx8OBBFi5ciJOTE66urixevJgVK1Zw8OBBYmJiCAgI4PDhw7i7u3Pw4EGmTZtGaGgoGzduZOXKlcCFWaCMjAzS09N55ZVXaNu2Le3atcPLywuA5cuXs3v3bioqKpg4cSIPPvhgPWVSRERERKR+NNjipqCggHHjxhEUFER6ejrx8fHs37+fTZs20apVK2vRsXnzZnx8fIiOjmbr1q2kpl64J6S8vJxBgwYxaNAgoqOjefLJJxkwYACff/45q1evZvbs2Xz22WekpaVhNpv56KOPKCwsvKytNseOHeO9997jgw8+4O233+bjjz8mOTmZlJQUfH198fT0ZO7cuZSUlBAUFMS4ceOYP38+CxcuJCwsDE9PzysWNgAvv/wyf/nLXwgMDCQhIYH169fz1FNP8f333xMTE2O9PC88PJz4+HhWrVpFRkZGtWO99tprLF26FF9fXyZPnoyXlxe7d+/m+PHjbNy4kbKyMh566CGCgoJo1qzZ1aRM6iA7O/u6jV1SUnJdx5dro/zYL+XGvik/9k35sW+OmJ8GW9y0bduW1atXk5CQQFlZGaWlpbi6uuLu7g5gLQpycnLo06cPAH379q0yRkBAAAB79+4lNzeXNWvWUFFRQZs2bXBzc8Pb25vnnnuO4cOHM2bMGFxcXC5rq42/vz8Gg4F27dpxxx134OzsTNu2bdmzZw9Nmzblt99+49FHH8VoNHL69GkAunTpQo8ePYiNjeXDDz+s07HIyckhMDAQuDADs2rVqhpnlK7k+PHj+Pr6AtCnTx9KS0vZs2cP33//PaGhoQBUVlZSUFBgndWR+uPn53fdxs7Ozr6u48u1UX7sl3Jj35Qf+6b82LeGmp/MzMwalzXY4iYpKYn27duzdOlS9u/fj8lkwsnpv7cQWSwW68+L7ZWVlVXGMBqN1p8rVqzAw8OjyvK1a9dy4MABUlJS2Lx5M4mJidW21aRJkybV/t9isfDtt9/yzTffsGHDBoxGIz179rQuP3nyJEajkaKiIm6++earOi5ms7nKcaiJwWCo8rm8vByg2mPo4uLCww8/zDPPPHNVsYiIiIiI3EgN9oECp0+fplOnTgCkpaXRsmVLzpw5Q1FREWazmT179gDQuXNnsrKyAGq8FCswMJC0tDQA0tPT2bJlC3l5eaxfv57u3bsTFRVFYWFhtW3XEn+HDh0wGo3s3LmTiooKysrK2LNnD2fOnCE2NpaXXnqpTmP5+Piwd+9eAHbt2oW/vz9OTk5UVFRc1vdiwdKiRQv+85//APDDDz9w9uxZANq3b8/Ro0etBRhcmOH69NNPqayspLS0tM5xiYiIiIjcSA125mb06NFERUWxfft2QkJCSElJYerUqUycOBFPT098fHwAGDNmDFOnTmXSpElVHihwqWnTphEdHU1qaioGg4HY2Fg8PDzYu3cvW7duxWg0Mnbs2Grb/qgBAwYQHx/PxIkTCQoK4p577iEmJobDhw/z+uuv4+XlhZubG9u2bWPEiBG1jjVv3jz++te/YjAYuPnmm4mNjaVp06aYzWYiIiK45557rH39/Px4+OGHef/992nevDmPPvooPXv2xNPTE4AZM2bw/PPP07FjRzp06ABcuMSvX79+jB8/HovFYn3yWnX0nhYRERERsRWD5eKf8kWuUWZmZo0FpNheQ72utrFQfuyXcmPflB/7pvzYt4aan9q+czbYmRt7ERMTQ05OzmXt8fHx9fI0sZ07d1rfV3OpsLAwhg0bds3ji4iIiIg4ChU31ygmJua6jj906FCGDh16XbchIiIiIuIIGuwDBURERERERC6l4kZERERERByCihsREREREXEIKm5ERERERMQh6IECUq+8Tam2DsHu6N0/IiIiIjeGZm7sTF5eHj179iQ0NJTQ0FDGjx/P7t27SU5OZsmSJVX6hoaGcujQIfLy8ggODra2p6WlERISQllZWY3bCQ0NZfHixZe1XbRlyxaCg4MZP348wcHB7Nixo572UERERETk+tDMjR3q3LkzGzZsAGDXrl2sWbOGBx6o21//Dx48yMqVK1m3bh0uLi619t29ezfHjx/H09OzSvvevXtZt24diYmJuLm5UVxczOTJk2nVqhX9+/f/YzslIiIiInKdaebGzp08eRIPD4869T116hRRUVEsX76cNm3aXLH/9OnTWbFixWXt69evJyIiAjc3NwBatGjBzJkzq32ZqIiIiIiIvdDMjR3Kzc0lNDSU0tJS8vPzSUhIYN++fWzdupWsrCxrv+zsbOv/y8vLiYiIYMSIEXTt2rVO2xk8eDCJiYn88MMP+Pr6WtuPHj2Kn59flb5+fn7k5uZe4541TpfmyZZKSkrsJha5nPJjv5Qb+6b82Dflx745Yn5U3NihSy9Ly8nJYcaMGYSFhTFy5EiioqKs/S69RyY3NxeTyURSUhKjR4+mQ4cOddrWrFmzWLZsGWvXrrW2GQwGKisrq/SzWCw4OWmi74/4faFoK9nZ2XYTi1xO+bFfyo19U37sm/Jj3xpqfjIzM2tcpm+rdq5r1640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\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"MTZkc23Zri8s"},"source":["lgb_preds_t = np.expm1(lgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = lgb_preds_t"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"f3NWKOner6ER","executionInfo":{"status":"ok","timestamp":1603293293363,"user_tz":-330,"elapsed":1189,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"5312ae5f-4f3d-42b4-d4e4-1f61fba2bc86","colab":{"base_uri":"https://localhost:8080/","height":419}},"source":["sol_fl"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>11.065881</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>74.172308</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>68.132212</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>30.333756</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>16.162731</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>68715</th>\n","      <td>107.059727</td>\n","    </tr>\n","    <tr>\n","      <th>68716</th>\n","      <td>124.706541</td>\n","    </tr>\n","    <tr>\n","      <th>68717</th>\n","      <td>5259.958961</td>\n","    </tr>\n","    <tr>\n","      <th>68718</th>\n","      <td>83.283619</td>\n","    </tr>\n","    <tr>\n","      <th>68719</th>\n","      <td>677.617267</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>68720 rows × 1 columns</p>\n","</div>"],"text/plain":["       TARGET(PRICE_IN_LACS)\n","0                  11.065881\n","1                  74.172308\n","2                  68.132212\n","3                  30.333756\n","4                  16.162731\n","...                      ...\n","68715             107.059727\n","68716             124.706541\n","68717            5259.958961\n","68718              83.283619\n","68719             677.617267\n","\n","[68720 rows x 1 columns]"]},"metadata":{"tags":[]},"execution_count":106}]},{"cell_type":"code","metadata":{"id":"Cf-O01rZr9gu"},"source":["sol_fl.to_csv(\"kFold_lgmb_learn.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"PAbxRAOLrIrJ"},"source":["# CatBoost"]},{"cell_type":"code","metadata":{"id":"vKCNqaHA7miP","executionInfo":{"status":"ok","timestamp":1603292842918,"user_tz":-330,"elapsed":13697,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"fece9cd7-b917-4686-9629-ff477af17e4d","colab":{"base_uri":"https://localhost:8080/","height":343}},"source":["!pip install catboost\n","from catboost import CatBoostRegressor"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting catboost\n","\u001b[?25l  Downloading https://files.pythonhosted.org/packages/52/39/128fff65072c8327371e3c594f3c826d29c85b21cb6485980353b168e0e4/catboost-0.24.2-cp36-none-manylinux1_x86_64.whl (66.1MB)\n","\u001b[K     |████████████████████████████████| 66.2MB 105kB/s \n","\u001b[?25hRequirement already satisfied: graphviz in /usr/local/lib/python3.6/dist-packages (from catboost) (0.10.1)\n","Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from catboost) (1.15.0)\n","Requirement already satisfied: pandas>=0.24.0 in /usr/local/lib/python3.6/dist-packages (from catboost) (1.1.2)\n","Requirement already satisfied: numpy>=1.16.0 in /usr/local/lib/python3.6/dist-packages (from catboost) (1.18.5)\n","Requirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (from catboost) (1.4.1)\n","Requirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from catboost) (3.2.2)\n","Requirement already satisfied: plotly in /usr/local/lib/python3.6/dist-packages (from catboost) (4.4.1)\n","Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.24.0->catboost) (2018.9)\n","Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.24.0->catboost) (2.8.1)\n","Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->catboost) (2.4.7)\n","Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->catboost) (1.2.0)\n","Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib->catboost) (0.10.0)\n","Requirement already satisfied: retrying>=1.3.3 in /usr/local/lib/python3.6/dist-packages (from plotly->catboost) (1.3.3)\n","Installing collected packages: catboost\n","Successfully installed catboost-0.24.2\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"s8uO45E2rLZQ","executionInfo":{"status":"ok","timestamp":1603295253946,"user_tz":-330,"elapsed":58968,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"20e16054-0c6c-4c8e-e1c2-2e62ec1f8678","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = CatBoostRegressor(n_estimators = 3000,\n","                       learning_rate = 0.33,\n","                       rsm = 0.4, ## Analogous to colsample_bytree\n","                       random_state=1,\n","                       )\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","cb_oofs, cb_preds, fi = run_gradient_boosting(clf, fit_params, trn_proc, test_proc, features)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","0:\tlearn: 0.7020670\ttest: 0.6947814\tbest: 0.6947814 (0)\ttotal: 8.85ms\tremaining: 26.5s\n","200:\tlearn: 0.2699814\ttest: 0.3114544\tbest: 0.3114544 (200)\ttotal: 1.19s\tremaining: 16.6s\n","400:\tlearn: 0.2354881\ttest: 0.2998538\tbest: 0.2997823 (396)\ttotal: 2.38s\tremaining: 15.4s\n","600:\tlearn: 0.2152649\ttest: 0.2955098\tbest: 0.2955084 (596)\ttotal: 3.56s\tremaining: 14.2s\n","800:\tlearn: 0.1992440\ttest: 0.2938520\tbest: 0.2937230 (747)\ttotal: 4.76s\tremaining: 13.1s\n","1000:\tlearn: 0.1869653\ttest: 0.2920956\tbest: 0.2920507 (996)\ttotal: 5.93s\tremaining: 11.8s\n","1200:\tlearn: 0.1770286\ttest: 0.2915909\tbest: 0.2915134 (1105)\ttotal: 7.11s\tremaining: 10.7s\n","1400:\tlearn: 0.1696185\ttest: 0.2916410\tbest: 0.2911428 (1244)\ttotal: 8.28s\tremaining: 9.45s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.2911427663\n","bestIteration = 1244\n","\n","Shrink model to first 1245 iterations.\n","\n","AV metric score for validation set is 0.29114276595193983\n","\n","------------- Fold 2 -------------\n","0:\tlearn: 0.6989574\ttest: 0.7131788\tbest: 0.7131788 (0)\ttotal: 7.76ms\tremaining: 23.3s\n","200:\tlearn: 0.2682020\ttest: 0.3233185\tbest: 0.3233185 (200)\ttotal: 1.2s\tremaining: 16.6s\n","400:\tlearn: 0.2334240\ttest: 0.3134880\tbest: 0.3134776 (399)\ttotal: 2.36s\tremaining: 15.3s\n","600:\tlearn: 0.2113164\ttest: 0.3081131\tbest: 0.3079222 (586)\ttotal: 3.54s\tremaining: 14.1s\n","800:\tlearn: 0.1953745\ttest: 0.3064293\tbest: 0.3063784 (788)\ttotal: 4.71s\tremaining: 12.9s\n","1000:\tlearn: 0.1836003\ttest: 0.3050007\tbest: 0.3049652 (996)\ttotal: 5.87s\tremaining: 11.7s\n","1200:\tlearn: 0.1731964\ttest: 0.3045111\tbest: 0.3045111 (1200)\ttotal: 7.04s\tremaining: 10.5s\n","1400:\tlearn: 0.1648958\ttest: 0.3043313\tbest: 0.3043313 (1400)\ttotal: 8.2s\tremaining: 9.36s\n","1600:\tlearn: 0.1580746\ttest: 0.3042662\tbest: 0.3040002 (1523)\ttotal: 9.36s\tremaining: 8.18s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.3040002462\n","bestIteration = 1523\n","\n","Shrink model to first 1524 iterations.\n","\n","AV metric score for validation set is 0.3040002459896438\n","\n","------------- Fold 3 -------------\n","0:\tlearn: 0.6998323\ttest: 0.7113541\tbest: 0.7113541 (0)\ttotal: 6.75ms\tremaining: 20.2s\n","200:\tlearn: 0.2680669\ttest: 0.3182023\tbest: 0.3181486 (199)\ttotal: 1.21s\tremaining: 16.8s\n","400:\tlearn: 0.2332973\ttest: 0.3079126\tbest: 0.3078530 (398)\ttotal: 2.41s\tremaining: 15.6s\n","600:\tlearn: 0.2133631\ttest: 0.3038212\tbest: 0.3038212 (600)\ttotal: 3.61s\tremaining: 14.4s\n","800:\tlearn: 0.1975591\ttest: 0.3031420\tbest: 0.3030504 (797)\ttotal: 4.81s\tremaining: 13.2s\n","1000:\tlearn: 0.1854907\ttest: 0.3020454\tbest: 0.3019557 (994)\ttotal: 5.98s\tremaining: 11.9s\n","1200:\tlearn: 0.1761231\ttest: 0.3012530\tbest: 0.3011391 (1185)\ttotal: 7.16s\tremaining: 10.7s\n","1400:\tlearn: 0.1677723\ttest: 0.3005588\tbest: 0.3005095 (1359)\ttotal: 8.33s\tremaining: 9.51s\n","1600:\tlearn: 0.1604282\ttest: 0.3004253\tbest: 0.3004148 (1580)\ttotal: 9.52s\tremaining: 8.32s\n","1800:\tlearn: 0.1538588\ttest: 0.3001154\tbest: 0.2999556 (1705)\ttotal: 10.7s\tremaining: 7.13s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.2999555502\n","bestIteration = 1705\n","\n","Shrink model to first 1706 iterations.\n","\n","AV metric score for validation set is 0.2999555512557672\n","\n","------------- Fold 4 -------------\n","0:\tlearn: 0.7027950\ttest: 0.6895273\tbest: 0.6895273 (0)\ttotal: 6.76ms\tremaining: 20.3s\n","200:\tlearn: 0.2710330\ttest: 0.3106222\tbest: 0.3106222 (200)\ttotal: 1.18s\tremaining: 16.4s\n","400:\tlearn: 0.2352949\ttest: 0.3002628\tbest: 0.3002628 (400)\ttotal: 2.34s\tremaining: 15.2s\n","600:\tlearn: 0.2149254\ttest: 0.2949211\tbest: 0.2948771 (597)\ttotal: 3.52s\tremaining: 14.1s\n","800:\tlearn: 0.1996886\ttest: 0.2922143\tbest: 0.2920300 (790)\ttotal: 4.7s\tremaining: 12.9s\n","1000:\tlearn: 0.1879988\ttest: 0.2899493\tbest: 0.2899383 (999)\ttotal: 5.88s\tremaining: 11.8s\n","1200:\tlearn: 0.1776881\ttest: 0.2892442\tbest: 0.2889407 (1166)\ttotal: 7.06s\tremaining: 10.6s\n","1400:\tlearn: 0.1692114\ttest: 0.2886368\tbest: 0.2884940 (1356)\ttotal: 8.23s\tremaining: 9.39s\n","1600:\tlearn: 0.1620507\ttest: 0.2885188\tbest: 0.2883332 (1550)\ttotal: 9.41s\tremaining: 8.22s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.2883331699\n","bestIteration = 1550\n","\n","Shrink model to first 1551 iterations.\n","\n","AV metric score for validation set is 0.2883331712587091\n","\n","------------- Fold 5 -------------\n","0:\tlearn: 0.6991486\ttest: 0.7043454\tbest: 0.7043454 (0)\ttotal: 6.38ms\tremaining: 19.1s\n","200:\tlearn: 0.2641076\ttest: 0.3334459\tbest: 0.3334459 (200)\ttotal: 1.18s\tremaining: 16.5s\n","400:\tlearn: 0.2299988\ttest: 0.3238125\tbest: 0.3238045 (398)\ttotal: 2.4s\tremaining: 15.6s\n","600:\tlearn: 0.2090077\ttest: 0.3192892\tbest: 0.3192737 (599)\ttotal: 3.64s\tremaining: 14.5s\n","800:\tlearn: 0.1943396\ttest: 0.3175462\tbest: 0.3175341 (798)\ttotal: 4.85s\tremaining: 13.3s\n","1000:\tlearn: 0.1828258\ttest: 0.3166298\tbest: 0.3166298 (1000)\ttotal: 6.04s\tremaining: 12.1s\n","1200:\tlearn: 0.1738290\ttest: 0.3161743\tbest: 0.3161743 (1200)\ttotal: 7.21s\tremaining: 10.8s\n","1400:\tlearn: 0.1658144\ttest: 0.3155200\tbest: 0.3154629 (1382)\ttotal: 8.39s\tremaining: 9.57s\n","1600:\tlearn: 0.1587207\ttest: 0.3148787\tbest: 0.3147918 (1590)\ttotal: 9.57s\tremaining: 8.36s\n","1800:\tlearn: 0.1529078\ttest: 0.3147503\tbest: 0.3147162 (1792)\ttotal: 10.8s\tremaining: 7.17s\n","2000:\tlearn: 0.1473550\ttest: 0.3143915\tbest: 0.3143915 (2000)\ttotal: 11.9s\tremaining: 5.96s\n","2200:\tlearn: 0.1425621\ttest: 0.3140846\tbest: 0.3140103 (2192)\ttotal: 13.1s\tremaining: 4.77s\n","2400:\tlearn: 0.1381037\ttest: 0.3138605\tbest: 0.3136702 (2296)\ttotal: 14.3s\tremaining: 3.57s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.3136702227\n","bestIteration = 2296\n","\n","Shrink model to first 2297 iterations.\n","\n","AV metric score for validation set is 0.3136702234152936\n","\n","\n","AV metric for oofs is 0.2995589341395788\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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GHt7+yvGfvlysk2bNjFnzhwWL14MwJAhQ1i1ahVjxozB2dn5iu2IiIiIyI379f8Ab8qys7MbLd6MjIxajzVYEhMfH4+rqyuLFy9m//79hIeHm3/Iw8Uf9pf+vVT+6x//Dg4OV+zj1z/WmzWrejo33XQTa9euxWAwmMt27drFv/71L9atW4eDgwN33313je1diq82l+9Fudxtt91GZmYmHTp0MJdlZ2dz++23Axez11atWjFixAhGjBhBdHQ027Ztu2ISU9uemJpkZmZe08R65JFHWLZsWZWyLl26aBmZiIiIiDRZDfaemDNnztC1a1cAtm3bRsuWLSksLKSgoICysjL27NkDQLdu3cjMzAQuPvWrPnXv3p0vv/wSgNTUVHbs2MGZM2fo0KEDDg4ObN++nYqKCkpLS+utz8DAQFasWEF+fj5w8S7K0qVLefbZZykqKmL48OH8/PPP5vonTpygc+fO9dL3/v372bp1K08//XSdv/Pdd9/RrVu3eulfRERERKQxNNidmCeffJKwsDDS09Px9/cnJSWF4OBgJkyYQKdOnfDw8ABg1KhRBAcHM3HixCob++vD66+/TkREBLGxsTRv3py//vWv2NvbExsby4QJE/Dx8eHBBx8kMjKy3vq86667mDZtGkFBQeZHLAcGBpqXqkVGRhISEoKDgwPl5eV4eXnxxBNPXLHNXy8nA3j22WdxdnY2L2u7cOECLVq0YMmSJTg5OV2xvUt7Yi65nvPX88xtV2PeRpamSXPAtmn8RXNAmgKD6WrrpkR+JSMjo94TTrEe+o+XaA7YNo2/aA7YtsbeE1Pbb84m/56Y7du3ExcXV608MDCQhx56qEH7njJlCufOnatSdqVN9U1FaWkpzz//fLXybt26MXfuXAtEJCIiIiJSf5p8EjNs2DCGDRtmkb6jo6Mt0u+NcnR0rPODAERERERErE2DbewXERERERFpCEpiRERERETEqiiJERERERERq6IkRkRERERErEqT39jf1OXl5RESEkJSUlKV8s2bN/P++++b3xXz4osv8sgjjwAQEBBAz549CQ8PN9cPCAgwb8ZPTk5m3bp1ODo6YjQaeeKJJ3j22WfN9SIiIvjyyy/55z//SUFBASdPnjS/d2f16tXcf//9VV4cunPnThISEli+fDnh4eFkZWXh4uJCWVkZvXr1Yvr06dx0000kJSWx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zpGFj1k6BBEREZuhJKaR5OXlERISQlJSUrVjzz//PM2bNycmJobvv/+e+fPnA/Dvf/+b3r17Y29vz7PPPst//vMfWrduTbdu3Xj33XcB2LNnD/fccw8AM2bMYPHixURERHDHHXeY2x8wYAA7d+4kKSmJZcuW0bVrVyorK2ndujVhYWF06dKFvLw8Ro4cSa9evarEtmLFClxcXBrqsoiIiIiIXDMlMRZ2+vRpcnJyMBqNFBYWcuedd7Ju3ToAhg4dSmxsLE5OTgD85z//AWDQoEEMGjQIuJigXKpfFyNGjCAsLAyAr7/+mqCgID777DMAunXrdk1tiYiIiIhYgvbEWFhaWhpDhgxh0KBBbN26tVH7vu++++jXrx//93//16j9ioiIiIjcCCUxFpaSksJjjz3G448/TlpaWqP336tXLw4dOtTo/YqIiIiIXC8tJ7Og48ePc/LkSby9vSkvL2f27Nnk5+fTpk2beu3HYDDUeqy4uBh7e3sAcnNzCQgIMB/r1q0bc+fOrddYRH6rsrOzLR1CozEajTZ1vlKVxl80B2xbUxl/JTEWlJKSQklJCaNGjQKgvLycLVu24O/vf91ttm7dmoKCAvPn/Px82rVrV2v9zMxMHnvs4lOVtCdG5Pp5enpaOoRGk52dbVPnK1Vp/EVzwLY15vhnZGTUekzLySwoNTWVuLg4kpOTSU5OJjo6mtTUG3t08cCBA80b9QE+/vhjBg8eXGPdf/7znxw+fJihQ4feUJ8iIiIiIo1Jd2Ia0eXLtQ4cOGB+Gtklffv25fTp0/z000/87ne/u64+xowZw1//+lfGjh2Lvb097u7uzJw503w8LS2NzMxMiouLadOmDStWrMDOzq5afJfMmDEDLy+v64pFRERERKQhGEwmk8nSQYh1ycjIwNvb29JhiIVoGYFoDtg2jb9oDti2xl5OVttvTi0nExERERERq6IkRkRERERErIqSGBERERERsSpKYkRERERExKooiREREREREauiJEZERERERKyKkhgREREREbEqetmlXBe38FRLhyAWdbjBWj6y8LEGa1tERER+G3QnxkLy8vK4++67CQgIICAggDFjxvDtt9+SlJREVFRUlboBAQH897//JS8vD19fX3P5tm3b8Pf3p7S0tNZ+AgICWLhwYbWySzZv3oyvry9jxozB19eXzz//vJ7OUERERESkYehOjAV169aNdevWAbB7925WrlzJY4/V7f9Cf//99yxfvpy4uDgcHR2vWPfbb7/lhx9+oFOnTlXK9+7dS1xcHGvWrMHFxYWioiImT55Mq1atGDhw4PWdlIiIiIhIA9OdmCbil19+oX379nWqm5+fT1hYGEuXLqVNmzZXrf/qq6+ybNmyauVr164lJCQEFxcXAJydnQkNDSUuLu6aYhcRERERaUy6E2NBubm5BAQEUFJSwsmTJ1m9ejX79u0jLS2NzMxMc73s7Gzz3+Xl5YSEhDB8+HDc3d3r1M8DDzzAmjVrOHDgAN27dzeXHz58GE9Pzyp1PT09yc3NvcEzE7l+l893aZqMRqPGyYZp/EVzwLY1lfFXEmNBly8ny8nJ4Y9//COBgYGMGDGCsLAwc73L97Dk5uYSHh5OfHw8Tz75JB06dKhTX9OnT+ett95i1apV5jKDwUBlZWWVeiaTCTs73aATy/l1Yi1NT3Z2tsbJhmn8RXPAtjXm+GdkZNR6TL9Wmwh3d3eaN29+1QTCw8MDf39/QkNDee2116ioqKhT+15eXjg5ObFjxw5z2W233Vbljg9cnJi33377tZ+AiIiIiEgjURLTRJw9e5ZTp05RXl5ep/qPPvooXbp04Z133qlzH9OmTePtt982fw4MDGTFihXk5+cDUFRUxNKlS3n22WevKXYRERERkcak5WQWdGlPDEBJSQkREREUFBTU+fuzZ89m9OjRDBgwgAEDBly1vpubGz169ODQoUMA3HXXXUybNo2goCAcHBwoKysjMDCQvn37AvDGG28QGBhIly5dqrWld3nYLi0jEBEREUszmEwmk6WDEOuSkZGBt7e3pcMQC1ESI5oDtk3jL5oDtq2x98TU9ptTd2J+A7Zv317jY5EDAwN56KGHGj8gEREREZEGpCTmN2DYsGEMGzbM0mGIiIiIiDQKbewXERERERGroiRGRERERESsipIYERERERGxKkpiRERERETEqmhjv1wXt/BUS4cgjUTvBBIREZGmRndifuOioqJISkqqc/1du3YxcOBA/vGPfzRgVCIiIiIi109JjJgdO3aM999/n3vuucfSoYiIiIiI1ErLyaxcUVER06dP5/z58xiNRiIiIsjNzWXVqlW4urrSokULPDw8SEpK4ssvv+Tnn39m6dKluLq6VmurXbt2REdH8/rrr1vgTERERERE6kZJjJU7deoUfn5++Pj4sGPHDmJjY9m/fz+ffPIJrVq1wtfX11z3p59+4oMPPsBgMNTY1k033dRYYYsVyc7OrvLZaDRWKxPbojlg2zT+ojlg25rK+CuJsXK33norMTExrF69mtLSUkpKSnBycqJt27YAVZaG9e7du9YERqQ2np6eVT5nZ2dXKxPbojlg2zT+ojlg2xpz/DMyMmo9pj0xVi4+Ph5XV1cSExOJjIzEZDJhZ/e/YTWZTOa/HRwcLBGiiIiIiEi9UhJj5c6cOUPXrl0B2LZtGy1btqSwsJCCggLKysrYs2ePhSMUEREREYbfeKQAACAASURBVKlfWk5m5Z588knCwsJIT0/H39+flJQUgoODmTBhAp06dcLDw6PObX3xxResXr2aw4cPk5WVxbp161izZk2NdfXuEBERERGxFCUxVs7Ly4stW7aYPw8bNgwAPz+/a27rwQcf5MEHH6yv0EREREREGoSSGBs0ZcoUzp07V6XM2dmZlStXWigiEREREZG6UxJjg6Kjoy0dgoiIiIjIddPGfhERERERsSpKYkRERERExKooiREREREREauiJEZERERERKyKNvbLdXELT7V0CFZD79QRERERqV+6E/MbFxUVRVJSUp3qlpeXExYWxrhx43jmmWf49ttvGzg6EREREZFrpzsxYpacnMxNN91EYmIiBw8eZObMmWzcuNHSYYmIiIiIVKEkxsoVFRUxffp0zp8/j9FoJCIigtzcXFatWoWrqystWrTAw8ODpKQkvvzyS37++WeWLl2Kq6trtbaeeOIJHn/8cQDatGnD2bNnG/t0RERERESuSkmMlTt16hR+fn74+PiwY8cOYmNj2b9/P5988gmtWrXC19fXXPenn37igw8+wGAw1NiWg4OD+e/4+HhzQiM3Jjs729Ih1Cuj0fibOye5NpoDtk3jL5oDtq2pjL+SGCt36623EhMTw+rVqyktLaWkpAQnJyfatm0LwD333GOu27t371oTmMslJCSQlZXFu+++22Bx2xJPT09Lh1CvsrOzf3PnJNdGc8C2afxFc8C2Neb4Z2Rk1HpMG/utXHx8PK6uriQmJhIZGYnJZMLO7n/DajKZzH9ffqelNh9//DF///vfiYmJqVN9EREREZHGpiTGyp05c4auXbsCsG3bNlq2bElhYSEFBQWUlZWxZ8+eOrd1/PhxPvjg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vM6dOzNu3DjGjRtHQEAA+/bt46677qJZs2b07duXvn374ufnR0BAQKMkMZfOSaxDdna2xszGaQ7YNo2/aA7YtsYc/4yMjFqPaTlZI0hJScHf35/PPvuM5ORk0tPTOXfuHMeOHatS78MPP8TFxYXu3btXa2P//v1s3bqVp59+utqxV155hYSEBH7++ecrxvH//t//44UXXqCsrAyAkpISCgoK6NixI7NmzeKTTz4x1z1x4gRdunS5ntMVEREREWlQuhPTCFJTU4mKijJ/NhgMjBo1ipiYGL777js+//xzCgsL+f3vf8/ChQvN9Xbt2kVAQAAXLlygRYsWLFmyBCcnp2rtt2zZkqCgIKKiovjrX/8KVF9ONmDAAKZMmUJWVhbjxo3jpptuoqysjIkTJ9K5c2dmzZrFnDlzzBv9mzVrRmRkZMNdFBERERGR62QwmUwmSwch1iUjIwNvb29LhyEWomUEojlg2zT+ojlg2xp7OVltvzm1nExERERERKyKkhgREREREbEqSmJERERERMSqKIkRERERERGroiRGRERERESsipIYERERERGxKkpiRERERETEquhll3Jd3MJT662tIwsfq7e2REREROS3z2ruxERFRZGUlFSlrLi4mKFDh1ooosYzdOhQiouLaz2enp4OXHz50PLlywHYvn07paWldWr/H//4B+Hh4TceqIiIiIhII7CaJEZq99577wHg6elJSEgIAHFxcZSVlVkyLBERERGRBtFklpMVFRUxffp0zp8/j9FoJCIigtzcXFatWoWrqystWrTAw8ODoqIiXn31VUpKSvD29jZ//+GHH2bw4MG0bdsWX19fXn/9dcrKyrC3t2f+/Pl07NiR+fPnk5mZSUVFBePGjcPX17fGspokJSWxe/duzpw5w8GDB5k2bRopKSnk5OTw1ltv0adPHxISEti8eTN2dnb4+PgwadIkTpw4wYwZMwAoLy8nKiqKrl278tBDD+Hj48OePXto2bIl7733HnZ2V84pT5w4waxZsygrK8NgMPDGG2/w+eef8/333zNlyhQCAgJISEhg6NCh/Pvf/2by5Mm88cYbTJ8+3XwXy9fXl+XLl1NcXExYWBi33HILXbt2NfdR0zmIiIiIiDQlTSaJOXXqFH5+fvj4+LBjxw5iY2PZv38/n3zyCa1atTInF8nJyXh4eDBr1izS0tJITb24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\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"_3X4uYUesri-"},"source":["cb_preds_t = np.expm1(cb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = cb_preds_t"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"fegglFE5s9bJ"},"source":["sol_fl"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"BFPVD-b8svS8"},"source":["sol_fl.to_csv(\"kFold_cb.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"GoIkDDBitd3K"},"source":["# XGBoost"]},{"cell_type":"code","metadata":{"id":"viainTLhtf_J","executionInfo":{"status":"ok","timestamp":1603293552869,"user_tz":-330,"elapsed":145135,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"d1fd14b3-81c3-463a-f665-72d9aa254ac5","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = XGBRegressor(n_estimators = 1000,\n","                    max_depth = 6,\n","                    learning_rate = 0.3,\n","                    colsample_bytree = 0.5,\n","                    random_state=1452,\n","                    )\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","xgb_oofs, xgb_preds, fi = run_gradient_boosting(clf, fit_params, trn_proc, test_proc, features)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","[15:16:48] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.75005\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.295259\n","[400]\tvalidation_0-rmse:0.289589\n","[600]\tvalidation_0-rmse:0.288052\n","[800]\tvalidation_0-rmse:0.287648\n","Stopping. Best iteration:\n","[667]\tvalidation_0-rmse:0.287364\n","\n","\n","AV metric score for validation set is 0.28736444400914996\n","\n","------------- Fold 2 -------------\n","[15:17:13] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.76079\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.306497\n","[400]\tvalidation_0-rmse:0.303532\n","[600]\tvalidation_0-rmse:0.303419\n","[800]\tvalidation_0-rmse:0.303209\n","Stopping. Best iteration:\n","[720]\tvalidation_0-rmse:0.303062\n","\n","\n","AV metric score for validation set is 0.3030624268195732\n","\n","------------- Fold 3 -------------\n","[15:17:41] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.75839\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.30801\n","[400]\tvalidation_0-rmse:0.300614\n","[600]\tvalidation_0-rmse:0.298092\n","[800]\tvalidation_0-rmse:0.297773\n","[999]\tvalidation_0-rmse:0.297917\n","\n","AV metric score for validation set is 0.2977527330665684\n","\n","------------- Fold 4 -------------\n","[15:18:10] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.73876\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.303775\n","[400]\tvalidation_0-rmse:0.298114\n","[600]\tvalidation_0-rmse:0.296867\n","[800]\tvalidation_0-rmse:0.295762\n","[999]\tvalidation_0-rmse:0.295499\n","\n","AV metric score for validation set is 0.2954712505942024\n","\n","------------- Fold 5 -------------\n","[15:18:41] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.75081\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.327573\n","[400]\tvalidation_0-rmse:0.320963\n","[600]\tvalidation_0-rmse:0.318647\n","[800]\tvalidation_0-rmse:0.318032\n","[999]\tvalidation_0-rmse:0.318127\n","\n","AV metric score for validation set is 0.31782017437393517\n","\n","\n","AV metric for oofs is 0.30046412900133945\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAzcAAAFiCAYAAADLDSa3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde1xVVf7/8dcBQQt08IqjaRiS4gU1vGSWplGpaRpmXhAs024qJeQXMvHLlJamk6mIFULgtVIZGYHMsfv0MzW0CexoBmhiaSYaoB6u5/eHX89IclO5neP7+Y+etdde67P3p5nH+bjW3sdgNpvNiIiIiIiIWDm7ug5ARERERESkOqi4ERERERERm6DiRkREREREbIKKGxERERERsQkqbkRERERExCaouBEREREREZvQoK4DENuRkpJS1yGIiIiIyA3A29u7zHYVN1KtyvsPTayD0WjE09OzrsOQa6T8WT/l0Poph9ZPOaz/KvoHdW1LExERERERm6DiRkREREREbIK2pUm1cgtNqusQ5Lpl1HUAcl2UP+unHFo/5dD6KYcVObLwoboOoVxaualnsrKy6NWrF/7+/vj7+zNu3Di+/fZb4uPjWbRoUam+/v7+/Pjjj2RlZeHr62tp37lzJ35+fhQUFJQ7j7+/PwsXLryi7ZJt27bh6+vLuHHj8PX15eOPP66mKxQRERERqRlauamHOnTowNq1awHYu3cvq1at4qGHqlYhHzp0iOXLlxMbG4ujo2OFfb/99luOHz9O27ZtS7Xv37+f2NhYYmJicHFxIS8vj2nTptGkSRP69+9/bRclIiIiIlLDtHJTz/3++++0atWqSn2zs7MJCQlh6dKlNGvWrNL+M2fOZNmyZVe0r1mzhsDAQFxcXABwdnYmKCiI2NjYq4pdRERERKQ2aeWmHsrMzMTf35/8/HxOnjxJdHQ033//PcnJyaSlpVn6GY1Gy9+LiooIDAxk2LBhuLu7V2meQYMGERMTw8GDB+ncubOlPSMj44pXIHp6epKZmXmdVyYiIiIi1u7y76D1jYqbeujybWnp6em88MILBAQEMHz4cEJCQiz9Ln9GJjMzk9DQUOLi4hg1ahStW7eu0lzBwcEsWbKE1atXW9oMBgMlJSWl+pnNZuzstNAnIiIicqOr698B0u/cWDF3d3caNmxYaWHh4eGBn58fQUFBvPjiixQXF1dpfC8vL5ycnNi1a5el7bbbbiu1QgQXK/SOHTte/QWIiIiIiNQSFTf13NmzZzl16hRFRUVV6j906FDatWvHypUrqzzHrFmzeOuttyyfAwICWLFiBdnZ2QDk5eWxdOlSHn/88auKXURERESkNmlbWj106ZkbgPz8fMLCwsjJyany+XPnzmXMmDH069ePfv36Vdrfzc2NLl268NNPPwHQs2dPZs2axdSpU3FwcKCwsJCAgAB69+4NwIIFCwgICKBdu3ZXjFWf33sulTMajXW+1CzXTvmzfsqh9VMOrZ9yaN0MZrPZXNdBiG1ISUnB29u7rsOQ66D/Q7duyp/1Uw6tn3Jo/ZTD+q+i75xaubFhn3zySZmvbw4ICOD++++v/YBERERERGqQihsbdt9993HffffVdRgiIiIiIrVCLxQQERERERGboOJGRERERERsgoobERERERGxCSpuRERERETEJqi4ERERERERm1Bv35a2fv16EhIScHR0xGQyERQUxF133UVSUhLR0dE4ODhQXFzMM888g4+PDwBDhgxh27ZtODk5AZCVlUVgYCDx8fGWcZ988kkaNmxIZGSkpW3IkCG0bt0ae3t7SkpKaNSoEa+99hqurq6EhoZy4MABXFxcSvV/4oknyox79+7dPP/883h4eFja7rnnHrKzszlw4ACnTp3iwoULtG/fnr/85S9ERERQUFDA1KlTmT59eqlzi4uLefXVV3F3d2fFihU0bdqUSZMmlYpj27ZtpKWlsX79epYvXw7AmjVrSElJ4a233sJgMJQZ56VruPRjoVlZWURERLBw4UIAYmNjLfcf4MUXX6RPnz6V5s0tNKnSPlLfZdR1AHJdlD/rV3051A8ri8iNpl4WN1lZWXz44Yds3rwZBwcHjhw5wty5c3FyciImJoaYmBhcXFzIy8tj2rRpODs7c+edd1Y67unTp0lPT8dkMpGbm0vjxo0tx6KioixFUXx8PMuWLeO1114DICgoiMGDB1c5/r59+1oKjT+Lj4/n8OHDhISEWNq+//57vLy8rjh369atxMXF8corr1R57q+//prk5GRiY2PLLWwAmjdvzocffsgjjzyCs7NzqWNJSUl8/fXXbNy4kUaNGnHy5EmefPJJli9fzm233VblWEREREREalO93JaWl5dHfn4+hYWFALi5ubFu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K7aljRgxggEDBpR7jslkwtfXt9TxMWPGsHLlSsaOHVvzFyAiIiIiUkUGs9lsrusgxDakpKTg7e1d12HIddBSvHVT/qyfcmj9lEPrpxzWfxV959S2NBERERERsQkqbkRERERExCaouBEREREREZug4kZERERERGyCihsREREREbEJKm5ERERERMQmVFrc5OXl8fbbb7NgwQIAvvnmG3Jycmo8MBERERERkatR6Y94hoaGctddd/H5558DkJ2dTXBwMFFRUTUdm1ght9Ckug6hWhxZ+FBdhyAiIiIiV6nSlZtz584xceJEHBwcABg+fDgmk6nGA5OatWjRIuLj46vcf8+ePfTv35/PPvusBqMSEREREbl2lRY3JSUl/PzzzxgMBgC+/PJLSkpKajwwqT9+/vln3nvvPe644466DkVEREREpFyVbkubN28e8+bNIy0tjbvvvptOnTrxyiuv1EZsch3y8vIIDg7m/PnzmEwmwsLCyMzMZPXq1bi6utKoUSM8PDyIj4/nyy+/5LfffmPp0qW4urpeMVbLli2JiIjg5ZdfroMrERERERGpmkqLm++++47Y2NhaCEWq06lTpxg7diw+Pj7s2rWLqKgoUlNT2bJlC02aNMHX19fS99dff+X999+3rM792U033VRbYdcbRqOxrkOoEyaT6Ya9dlug/Fk/5dD6KYfWTzm0bpUWN19//TU9e/bE3d29NuKRatKiRQsiIyOJjo6moKCA/Px8nJycaN68OUCpLWbdu3cvt7C5UXl6etZ1CHXCaDTesNduC5Q/66ccWj/l0Poph/VfSkpKuccqLW7S0tIYOXIkN910k+WlAgaDgV27dlVfhFLt4uLicHV1ZfHixaSmphIaGoqd3X8fsTKbzZa/X8qriIiIiIg1q7S42bFjR23EIdXszJkzdOrUCYCdO3fSuHFjTpw4QU5ODjfddBP79u2jZ8+edRyliIiIiEj1qbS48ff3L3PL0po1a2okIKkeo0aNIiQkhO3bt+Pn50diYiLTp09n0qRJtG3bFg8PjyqP9fnnnxMdHU1GRgYHDhxg7dq1xMTElNlXvw8jIiIiInWlSm9Lu6SoqIiUlBRyc3NrNCi5fl5eXnz00UeWz/fddx8AY8eOveqx7r33Xu69997qCk1EREREpEZUWtz8+V/4PT09efLJJ2ssIKk7M2bM4I8//ijV5uzs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2xURERERuaU0c9OE0tLSiIuLs3w2GAxMmDCBVatWcfDgQXbs2EFpaSm/+c1vWLJkieW8/fv3ExQUxD//+U/s7e1Zvnw5Dg4OV7Xfrl07Zs6cSVxcHG+++SZw9bK0QYMGERoaSm5uLgEBAdxxxx2YTCamTZtGt27diIqK4pVXXrFsMNCqVStiYmJu3aCIiIiIiNwgg9lsNjd1J6RlyMzMpH///k3dDfkVNBVv3RQ/66cYWj/F0Pophs1fQ39zalmaiIiIiIi0CEpuRERERESkRVByIyIiIiIiLYKSGxERERERaRGU3IiIiIiISIug5EZERERERFoEJTciIiIiItIi6Es85abyiEy7qe0dX/LoTW1PRERERFquFjtzExcXR1JSUq2yCxcuMHz48CbqUW2FhYW88sor110vKCiI77777rrqJCUl8b//+78AbN++vdH16hpDEREREZHmqsUmN81d586dWbhw4W25lp+fH6NGjaKyspJ169bdlmuKiIiIiNxuVrssraysjLlz53Lx4kXKy8uJjo7m2LFjrFmzBldXV+zt7fH09KSsrIw5c+ZQUVFB//79LfVHjx6Nr68vTk5O+Pn5sWDBAkwmE7a2tixatIiuXbuyaNEicnJyqK6uJiAgAD8/vzrL6pKUlMSBAwcoKioiPz+f8PBwUlNTKSgoYNmyZTg5OREWFkZSUhKjRo1i8uTJ7Nq1i8rKSj788EPatm3b4P2XlpYSGRlJSUkJVVVVvPzyy/Tp04c//vGPpKWl4e7uTlVVFdOnT2f//v106tSJgoICjhw5QkxMDN7e3uTn5xMREcGFCxcYP348X3zxBcnJyVeNYXV1NdHR0fz0009UVVURFhbGgw8+eFPjKSIiIiLya1ntzE1hYSH+/v4kJiby4osvEh8fz1tvvcW6detYvXo1P/zwAwDJycl4enqyadMmevfubalfVVWFr68vs2fPZsWKFcyYMYP169czbdo0Vq1aRXFxMbt37+ajjz5i06ZNVFVV1VnWkOPHj7N69WqeeeYZPvjgA9577z1mzZpFampqrfOqq6u566672LhxI926dWPfvn3XvP/169fj4+NDYmIiUVFRxMbGUlxczMaNG/nzn/9MTEwM+/fvr1XnqaeeokePHsTExNTZptlsrnMMU1JS6Ny5M4mJibz33nssXrz4mv0TEREREbndrHbmxtnZ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ue+++yx9+Mc//oGNjQ3t27enbdu2FBYWUl1dzcGDBxu8b4PBQHV19XX1RURERESkqWjmphEee+wxIiIi2L59O4GBgaSmphISEsLUqVNxc3OzvJQ/YcIEQkJCmDZtWq0NBa4UGhpKVFQUaWlpGAwGYmNjcXFxITs7m61bt2I0Gpk4cWKdZfV55JFH+Oabb5g6dSqtWrUiLi4OJycn9u/fT1BQECaTiYULFwIwdepUnn32WXr06MHdd9/d4H0PHDiQsLAwVq5c2ei+6DtqRERERKSpGMxXrl0S+RUyMzPrTerEOmidsXVT/KyfYmj9FEPrpxg2fw39zamZGysSExNDQUHBVeXx8fHY29s3QY9ERERERJoPJTdWJCYmpqm7ICIiIiLSbGlDARERERERaRGU3IiIiIiISIug5EZERERERFoEJTciIiIiItIiaEMBuak8ItNuqJ6+H0dEREREfq1bltxkZGSwceNG3nnnHUvZypUr6dSpE2vXrmX69OkEBQUBcOLECd59912WLFlCZGQkubm5dOzYEZPJhJeXF3PnzuWOO+4gKSmJFStW0L17d0ubd955J2+88UatemazGZPD//4nAAALtUlEQVTJxEsvvcQDDzxQbx+rqqp4++232bNnD3fccQdGo5EFCxZwzz33AJCSksKHH36I0WjEZDLxzDPP8PDDDwMQFBREnz59iIyMtLQXFBREYmIiZWVlREVFce7cOaqrq+nUqRNxcXF88cUXbN68mYqKCvLz8/Hy8gIgLi6OiIgILl68SJs2bTCbzRgMBl599VXuvvtuIiMjefjhh3nooYcs1xo+fDgpKSk4ODhw6NAhli5dSmVlJSaTieHDhxMSEkJCQgJffvklJSUlnD592vJlowkJCYwZM8ZS/8cff2Tx4sUUFhZSU1NDv379eOmll7C3t7eM+eeff07r1q0BiIyMJDQ0lG7duv2q3xERERERkZupSWZunJyc+Pjjj3n88cdp27btVcdffPFFHnroIWpqali1ahVRUVG89dZbADzyyCNERETU2e7legA//vgjTz/9NDt27Ki3H2vWrKGkpIQtW7ZgMBjIysoiNDSUbdu2cfjwYdatW8fatWvp2LEjZWVlPP3007Rv354HH3wQgG+//ZaTJ0/i5uZWq91169bh7e3NzJkzAVi1ahUpKSkEBgYyYcIETpw4QVhYGImJ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\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"945rVXZztyBr"},"source":["xg_preds = np.expm1(xgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = xg_preds"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"7Xgsg3TTuEAN","executionInfo":{"status":"ok","timestamp":1603280216032,"user_tz":-330,"elapsed":1264,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"8fa49913-c43c-407b-bba5-6aad45579edf","colab":{"base_uri":"https://localhost:8080/","height":419}},"source":["sol_fl"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>11.473371</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>72.234839</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>66.618480</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>28.467950</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>13.987209</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>68715</th>\n","      <td>106.039462</td>\n","    </tr>\n","    <tr>\n","      <th>68716</th>\n","      <td>116.339991</td>\n","    </tr>\n","    <tr>\n","      <th>68717</th>\n","      <td>5344.753615</td>\n","    </tr>\n","    <tr>\n","      <th>68718</th>\n","      <td>80.224533</td>\n","    </tr>\n","    <tr>\n","      <th>68719</th>\n","      <td>772.972686</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>68720 rows × 1 columns</p>\n","</div>"],"text/plain":["       TARGET(PRICE_IN_LACS)\n","0                  11.473371\n","1                  72.234839\n","2                  66.618480\n","3                  28.467950\n","4                  13.987209\n","...                      ...\n","68715             106.039462\n","68716             116.339991\n","68717            5344.753615\n","68718              80.224533\n","68719             772.972686\n","\n","[68720 rows x 1 columns]"]},"metadata":{"tags":[]},"execution_count":61}]},{"cell_type":"code","metadata":{"id":"QrYYXSOtuDrx"},"source":["sol_fl.to_csv(\"kFold_xg.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"-4xymTi9u0K5"},"source":["# Feature Engineering"]},{"cell_type":"code","metadata":{"id":"GtO2B_dRu-DI"},"source":["def join_df(train, test):\n","\n","  df = pd.concat([train, test], axis=0).reset_index(drop = True)\n","  featur = [c for c in df.columns if c not in [TARGET_COL, 'ADDRESS']]\n","  cols = num_cat_col + num_col + [TARGET_COL]\n","  df[cols] = df[cols].apply(lambda x: np.log1p(x))\n","\n","  return df, featur\n","\n","def split_df_and_get_features(df, train_nrows):\n","\n","  train, test = df[:train_nrows].reset_index(drop = True), df[train_nrows:].reset_index(drop = True)\n","  features = [c for c in train.columns if c not in [TARGET_COL,'ADDRESS']]\n","  \n","  return train, test, features"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"LCjIwyob2Lym"},"source":["df, features = join_df(train, test)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"ftD-_0dL7aVf","executionInfo":{"status":"ok","timestamp":1603350181183,"user_tz":-330,"elapsed":1789,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"20542a17-ca32-4123-fcf7-16394dc49aa1","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["cat_col"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['POSTED_BY', 'BHK_OR_RK']"]},"metadata":{"tags":[]},"execution_count":31}]},{"cell_type":"code","metadata":{"id":"QMpcxXre7mLl"},"source":["df[cat_col] = df[cat_col].apply(lambda x: pd.factorize(x)[0])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"gkI2f_2v8vX4","executionInfo":{"status":"ok","timestamp":1603350183470,"user_tz":-330,"elapsed":1200,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"24a26082-9799-42b7-bd3b-1cf7f128a21e","colab":{"base_uri":"https://localhost:8080/","height":196}},"source":["df.head(3)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>POSTED_BY</th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>BHK_OR_RK</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","      <td>1.098612</td>\n","      <td>0</td>\n","      <td>7.171070</td>\n","      <td>0.693147</td>\n","      <td>0.693147</td>\n","      <td>Ksfc Layout,Bangalore</td>\n","      <td>2.636906</td>\n","      <td>4.364346</td>\n","      <td>4.025352</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>1</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","      <td>1.098612</td>\n","      <td>0</td>\n","      <td>7.151485</td>\n","      <td>0.693147</td>\n","      <td>0.693147</td>\n","      <td>Vishweshwara Nagar,Mysore</td>\n","      <td>2.585848</td>\n","      <td>4.352142</td>\n","      <td>3.951244</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>0</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","      <td>1.098612</td>\n","      <td>0</td>\n","      <td>6.839647</td>\n","      <td>0.693147</td>\n","      <td>0.693147</td>\n","      <td>Jigani,Bangalore</td>\n","      <td>2.623076</td>\n","      <td>4.364781</td>\n","      <td>3.784190</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   POSTED_BY  UNDER_CONSTRUCTION  ...  LATITUDE  TARGET(PRICE_IN_LACS)\n","0          0                 0.0  ...  4.364346               4.025352\n","1          1                 0.0  ...  4.352142               3.951244\n","2          0                 0.0  ...  4.364781               3.784190\n","\n","[3 rows x 12 columns]"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"code","metadata":{"id":"CEHl25bN7zwW"},"source":["features = [c for c in df.columns if c not in [ TARGET_COL]]\n","cat_num_cols = [c for c in features if c not in ['ADDRESS']]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"aQaUJDUw8C_E","executionInfo":{"status":"ok","timestamp":1603350190373,"user_tz":-330,"elapsed":1196,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"43edd872-d93f-42e1-81b1-1f6d9b37aa7e","colab":{"base_uri":"https://localhost:8080/","height":187}},"source":["cat_num_cols"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['POSTED_BY',\n"," 'UNDER_CONSTRUCTION',\n"," 'RERA',\n"," 'BHK_NO.',\n"," 'BHK_OR_RK',\n"," 'SQUARE_FT',\n"," 'READY_TO_MOVE',\n"," 'RESALE',\n"," 'LONGITUDE',\n"," 'LATITUDE']"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"code","metadata":{"id":"rkFjeJXF8MhI"},"source":["train_proc, test_proc, features = split_df_and_get_features(df, train.shape[0])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"uwACi_ie8POG","executionInfo":{"status":"ok","timestamp":1603350321527,"user_tz":-330,"elapsed":120847,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"06fca22c-b4cf-497f-9cd5-8cf0a975b0cf","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = XGBRegressor(n_estimators = 1000,\n","                    max_depth = 6,\n","                    learning_rate = 0.05,\n","                    colsample_bytree = 0.5,\n","                    random_state=1452)\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","xgb_oofs, xgb_preds, fi = run_gradient_boosting(clf, fit_params, train_proc, test_proc, cat_num_cols)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","[07:03:21] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.65001\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.347213\n","[400]\tvalidation_0-rmse:0.328996\n","[600]\tvalidation_0-rmse:0.319305\n","[800]\tvalidation_0-rmse:0.313943\n","[999]\tvalidation_0-rmse:0.309792\n","\n","AV metric score for validation set is 0.3097875932881934\n","\n","------------- Fold 2 -------------\n","[07:03:45] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.65875\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.355123\n","[400]\tvalidation_0-rmse:0.338781\n","[600]\tvalidation_0-rmse:0.329266\n","[800]\tvalidation_0-rmse:0.323999\n","[999]\tvalidation_0-rmse:0.320658\n","\n","AV metric score for validation set is 0.3206573280140601\n","\n","------------- Fold 3 -------------\n","[07:04:08] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.65333\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.356451\n","[400]\tvalidation_0-rmse:0.340633\n","[600]\tvalidation_0-rmse:0.331498\n","[800]\tvalidation_0-rmse:0.326842\n","[999]\tvalidation_0-rmse:0.323119\n","\n","AV metric score for validation set is 0.32311873433350485\n","\n","------------- Fold 4 -------------\n","[07:04:32] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.63983\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.349754\n","[400]\tvalidation_0-rmse:0.334524\n","[600]\tvalidation_0-rmse:0.326324\n","[800]\tvalidation_0-rmse:0.320753\n","[999]\tvalidation_0-rmse:0.317263\n","\n","AV metric score for validation set is 0.31726315657365395\n","\n","------------- Fold 5 -------------\n","[07:04:55] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.64878\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.372208\n","[400]\tvalidation_0-rmse:0.356033\n","[600]\tvalidation_0-rmse:0.346693\n","[800]\tvalidation_0-rmse:0.341783\n","[999]\tvalidation_0-rmse:0.338134\n","\n","AV metric score for validation set is 0.33813451906386416\n","\n","\n","AV metric for oofs is 0.3219269336275809\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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3Ki77rqr2mAjSZGRkYqMjFRWVpa2bt2qtWvX2vZFR0crNDRUq1atkiTt3LlTc+bM0datW2v9rnl5eSosLLSFsczMTPn4+EiSKisrNW/ePJnNZluAS0pKUmxsrFasWKE+ffroww8/1JAhQyRJ3377rYqKimzBcNmyZerZs2et1wcAAAAc6apblhYcHKyvvvqq1jGnT5/W/v37ZTablZFR86uNJ02apNatW+vf//63OnTooD/84Q9KSkpSfn6+/vGPf+i+++677PqOHTumoqIiTZgwwbZt9OjRcnV11RdffFHrsYMGDdJbb70lSSopKVFubq6uu+46SdL7778vX19fW7CRpBkzZmj//v0qKCjQ+PHjbcdKFwLVuHG8VhkAAADNh+Fnbn6prKxMe/bs0bRp05SWllbjuJ07d+qOO+7Q7bffrkWLFik/P1+dOnWqdmxQUJCOHj2qm2++Wffff78mTZqk7OxszZkzRy1btrzsGo8fP66AgIBLtgcEBOj48eP67W9/W+Oxd955p9asWaOwsDC98847uu222/TZZ59JknJychQYGFhlvMlkUo8ePZSbm6s77rhDy5cvV2lpqdzd3bVz5049++yzl12/o2VnZzu6BKdUUlLCb+PE6I/zojfOjf44L3rj3IzcH8OHm+PHjys8PFySdPjwYUVGRmrEiBFaunSpZs6cWeWZmw0bNqhVq1basWOHZs+eLVdXV40ePVqZmZmaMWNGtec/e/as7RytWrXS/fffr5dfflljx45tcM0VFRWXbLNarVVqrc4NN9ygsrIyffvtt8rMzNT//u//2sKNyWSq9bwtW7ZU//799f7776tXr16qrKyUr6+vbdxjjz1W5ZmbpUuX2pa8OZPqgiEuhD5+G+dFf5wXvXFu9Md50Rvn1tz7Y7FYatxn+HDzy2duoqKi5OfnZ9tX3TM3J0+e1Oeff674+HiZTCaVlJSobdu2NYabAwcO6O6777Z99vHxUZcuXRpcb7du3bRu3bpLtmdnZ2vSpEl1Hj9q1Cj9/e9/v2QGqFu3bnrllVeqjLVarTp69KgtxIwfP15paWnKzc3V+PHjq4zlmRsAAAA4u6vqmZvo6GitXLlS586dq3HMjh07FBYWpjfffFNpaWnauXOnfvrpJ504ceKSsa+99pq8vLzUu3fvRquxW7du6tChg1599VXbtl27dsnV1bVe1xk1apQ2b96swYMHV9k+cOBA5eXlae/evbZtycnJCgkJsb2F7X/+53+UnZ2tt99++4pmngAAAABHMPzMzS/5+Pho1KhRWr9+vSRdsixt/PjxysjI0PLly23bTCaTJkyYYHuxwObNm7Vr1y6dOXNGN954o+Lj4xu9ztWrV+vpp5/Wa6+9JpPJpK5du2rlypX1OvbizNGoUaOqbHdxcVFiYqKWLFmiNWvWyGq1KigoSIsWLbKNcXV1Vf/+/XX06FF17NixyvG/XpbWv39/zZ079wq+JQAAANC4TFar1eroImAMFotFk7eddGgNufG84a06zX1trdHRH+dFb5wb/XFe9Ma5Nff+WCwWhYSEVLvvqpq5cYR169YpKyvrku0NeSB///79WrFixSXbx4wZo+nTpze4RgAAAMAICDdNbO7cuY22fCs4OLjKX0gKAAAA4P8j3KBRsSwMAAAAjnJVvS0NAAAAgHERbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCG0cHQBMBZfc4ZDrpsbP84h1wUAAIDzYOYGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYQpO9UCArK0tbt27V2rVrbdsSEhLUvn17JSUlacaMGQoPD5ck5eXlad26dYqPj5fZbNbBgwfl5eWlsrIyBQUF6ZFHHlHr1q2VmpqqNWvWqGvXrrZzXnfddXr22WerHGe1WlVWVqbo6Gj169evxhrLy8v13HPP6f3331fr1q3l5uamJ554Qr169ZIkpaen66WXXpKbm5vKysr00EMPadSoUZKk8PBw3XTTTTKbzbbzhYeHKyUlRcXFxXr88cdVUFCgiooKtW/fXsuXL9e//vUv/e1vf9P58+d15MgRBQUFSZKWL1+umJgY/fzzz2rTpo2sVqtMJpOWLFmi7t27y2w2a9SoURo6dKjtWsOGDVN6ero8PDy0f/9+rVixQqWlpSorK9OwYcM0Z84cJSYmau/evSoqKlJ+fr569OghSUpMTNTo0aNtx584cUJLly7VqVOnVFlZqb59+yo6OlqtWrWy/ea7d+9Wy5YtJUlms1lz585Vly5drujPCAAAANCYHPK2tGuuuUavv/66Jk6cKE9Pz0v2L1y4UEOHDlVlZaVeeOEFPf7441q9erUkaezYsYqJian2vBePk6QTJ05o5syZ2rVrV411bNy4UUVFRfr73/8uk8mkzz77THPnztVbb72lL774QsnJyUpKSpKXl5eKi4s1c+ZMtWvXTgMGDJAkffrpp/rmm290ww03VDlvcnKygoODFRkZKUl64YUXlJ6errCwME2YMEF5eXmKiopSSkpKleOWLVumnj17SroQDp966ilt2rSp1t+yuLhY0dHRSkhIUM+ePVVWVqb58+dr27ZtioyMVGRkZLVB86LKykrNmzdPZrPZ9r2SkpIUGxurFStWSJLatWunTZs26cEHH6y1FgAAAMCRHLIsrVWrVrrnnnuUmJhY6zgXFxfNnj1b2dnZys/Pv6xrdO3aVcXFxaqoqKhxzKuvvqpHH31UJpNJktS3b1/97W9/U4sWLbR582ZFRUXJy8tLkuTp6amFCxcqOTnZdvy8efO0Zs2aS85bVFSkM2fO2D7Pnj1bYWFhl1X/7373O3311Vd1jktPT9fw4cNtocjNzU3Lly/X5MmT63Wd999/X76+vrZgI0kzZszQ/v37VVBQIEmaPn260tPTdfr06cv6DgAAAIA9OezvuZk6daruuusuTZ8+vdZxLi4uCgwMVE5OzmWdf9++ferQoYNcXV2r3X/mzBm1bNlS7dq1q7L94uecnBwFBARU2RcQEKDjx4/bPg8ZMkRJSUk6dOiQevfubdseFham+++/X++++64GDRqkcePGVdlfHzt37lRgYGCd43JychQcHFxlW3WzYbUd/+vrmEwm9ejRQ7m5uZKkli1basaMGXrxxRerLMNzJtnZ2Y4uwamVlJTwGzkx+uO86I1zoz/Oi944NyP3x+7h5uIsSYsWLfTQQw8pISGhzuVOZ8+elYvLhUmmzMxMHThwwLZvzJgxtoC0atUqJSUl6ccff1SbNm305z//udbz1jarYzKZVFlZWWWb1Wq11XHRI488opUrV2rjxo22bTfeeKN27typrKwsvf/++/rjH/+o6Oho3XXXXbXW89hjj6lNmzb6/vvv1aVLFy1btqzW8SaTSSaTqdbvUZeajrdarVWC4YQJEzRlyhR98803Db5WU/p1EEVV2dnZ/EZOjP44L3rj3OiP86I3zq2598disdS4r8mWpXl7e6uoqKjKtsLCQnXo0MH2ecyYMfrvf/9rmyGoTnl5uY4cOWJ7GH7s2LFKSUmx/eeXMz8LFy5USkqKVq5cqYqKCvn5+dV43rZt26q8vFw//PBDle0HDx6U1WpVt27dqoQo6cIfhO7du1fZFhwcLA8PD3300Ue2bSUlJXJzc9OgQYNkNpuVkJCgtLS0Gmu5aNmyZUpJSZHZbJa7u7s6duwoSWrfvv0lv2VZWZnatGmjbt266Ysvvqiyr7CwsN4hpLrvabVadfToUfn6+tq2ubi41LgMDwAAAHAGTRZufH19dfLkSdtzI4WFhcrKylLfvn2rjFuwYIFWrVpV43kSEhI0ZMgQeXt71/vavXv31k033aRXXnml1nFhYWFatmyZysvLJV1IgWazWaWlpYqIiFBCQoIKCwslXXhwf/Xq1brvvvsuOc+CBQv03HPP2T7PmDFDH374oe3zyZMn5ePjU+/6hw4dqtLSUr3zzjuSpAEDBigjI8NW544dOxQSEiJJCg0N1TvvvKP9+/dLkkpLSxUXF1fl+rUZOHCg8vLytHfvXtu25ORkhYSE2J43uuiOO+7QyZMndfjw4Xp/FwAAAMBemmxZmpubm1auXKnY2FhZrVZZrVYtWrRI1157bZVx/fv3v2TbxeVlp0+fVp8+ffT444/b9v16WZqkal9MMH/+fN11110aPXq0rrnmmmprjIyM1IsvvqiJEyfqN7/5jdq2bav169erZcuW6tOnjxYsWKDIyEjbq6AjIiKqfbW0r6+vAgMDdfToUUkXZmCefPJJPf/883J1dVW7du0UFxdXr9/toscee0xz5szRgAEDNHjwYB07dkxhYWFyd3fXtddeq8WLF0uSPDw8tGHDBi1ZskQlJSVydXVVaGiopkyZUq/ruLi4KDExUUuWLNGaNWtktVoVFBSkRYsWVTv+0Ucfrfe5AQAAAHsyWa1Wq6OLgDFYLBZN3nbSIdfOjR/nkOs2F819ba3R0R/nRW+cG/1xXvTGuTX3/lgsFtsqpl9z2NvS7GXPnj1VXt98UUREhEaOHGn/ggAAAAA0CcOHm+HDh2v48OGOLgMAAABAE3PIX+IJAAAAAI3N8DM3sC+efQEAAICjMHMDAAAAwBAINwAAAAAMgXADAAAAwBAINwAAAAAMgXADAAAAwBAINwAAAAAMgXADAAAAwBAINwAAAAAMgXADAAAAwBAINwAAAAAMgXADAAAAwBAINwAAAAAMgXADAAAAwBAINwAAAAAMgXADAAAAwBBaOLoAGIuvOaNe43LjxzVxJQAAALjaMHMDAAAAwBAINwAAAAAMgXADAAAAwBAINwAAAAAMgRcKNKK8vDyFhoYqKChIklRaWqro6GidOHFCR44cUUxMjG1seHi4YmNj1aZNG0VFRSk1NVWS9M9//lMvvfSSXnrpJbm7u1d7nYqKCq1Zs0bvvvuu3N3d1bJlS8XGxqpnz56SpJtuukl9+/aVJJWXl6tDhw5aunSpPD096113z549FRcXJ1dXVw0bNkzp6eny8PDQ119/rYceekh/+ctf5OPj0zg/HAAAANAICDeNzM/PTykpKZKkffv2af369Ro3rn5vBjt8+LDWrl2r5OTkGoONJCUmJqqgoECpqalycXHRsWPHNHv2bL322mvy8vKSp6enrQZJSkhI0KZNmzRnzpx61S1JZrNZ6enpmjBhgm1bcXGxHn74YT399NMEGwAAADgdlqU1oR9++EEdO3as19jCwkLFxMRo9erV8vb2rnXsK6+8opiYGLm4XGifv7+/QkND9be//a3a8cHBwfrqq68uq/ZfH2O1WhUdHa0ZM2bYZoUAAAAAZ8LMTSM7fvy4wsPDdf78eeXn5ysxMVH79+9XZmamDhw4YBuXnZ1t++fy8nJFRUVpzJgx8vf3r/X8Z86ckbu7u9q1a1dle0BAgN5+++1LxlutVu3evVuBgYH1/g5lZWXas2ePpk2bZtu2evVqlZaWKjQ0tN7nqc0vvz+aXklJCb+5E6M/zoveODf647zojXMzcn8IN43sl8u7jh07pvnz5ysiIkJjx4695Jmbi44fPy6z2axNmzbpD3/4gzp37lzrNaxWa7XbLs7kFBcX285/9OhRhYaG6t577631nBdDmXRheVxkZKRGjBhh2+/u7q6zZ89q7969GjJkSK3nqo+AgIArPgfqLzs7m9/cidEf50VvnBv9cV70xrk19/5YLJYa9xFumpC/v79atmxpCx016dGjh8LCwnTNNdfo0Ucf1aZNm+Tq6lrt2LZt26qsrEyFhYVVlq8dOnRI3bt3l6Qqz9wsX75cnTp1UosWtbf6l6EsKipKfn5+VfbPnTtXhYWFmjFjhgICAuq93A4AAACwF565aUKnT5/WqVOnVF5eXq/xo0ePlo+Pj55//vlax02fPl3Lli1TRUWFpAszRBkZGZo4ceIlY2fPnq2tW7fq+++/r3fd0dHRWrlypc6dO1dlu4+Pj+bOnatHH31UlZWV9T4fAAAAYA+Em0Z2cXlXeHi4HnzwQcXGxsrNza3exy9atEiZmZnKysqqcUxkZKS6d++uCRMmaMqUKYqLi9Py5cvVtm3bS8a2bdtWkZGRWr58eb1r8PHx0ahRo7R+/fpL9k2YMEHXXntttfsAAAAARzJZq3uAA2gAi8WiydtO1mtsbnz9Xo+NxtHc19YaHf1xXvTGudEf50VvnFtz74/FYlFISEi1+3jmxknt2bNHycnJl2yPiIjQyJEjG3TOuLg4HTt27JLtGzZsUKtWrRp0TgAAAMBZEG6c1PDhwzV8+PBGPWdcXFyjng8AAABwJoQbNCqWmwEAAMBReKEAAAAAAEMg3AAAAAAwBMINAAAAAEMg3AAAAAAwBMINAAAAAEMg3AAAAAAwBMINAAAAAEMwWa1Wq6OLgDFYLBZHlwAAAICrQEhISLXbCTcAAAAADIFlaQAAAAAMgXADAAAAwBBaOLoANA9Lly7V559/LpPJpMcff1zBwcG2fR9++KFWrVolV1dXDR48WHPmzKnzGDSuy+1PVlaWHn74YfXo0UOS1LNnT8XGxjqqfEOrrTfnz5/X4sWLdeTIEaWmptbrGDSuy+0P94791Nabjz/+WKtWrZKLi4v8/Pz0zDPPyMXFhXvHji63P/v27ePesZPaevP6669r+/btcnFxUe/evbVkyRKZTCZj3TtWoA5ZWVnWBx980Gq1Wq1Hjx613n333VX2jxkzxvrtt99aKyoqrNOmTbMeOXKkzmPQeBrSn48//tg6b948R5R7VamrN08++aT1pZdesk6cOLHex6DxNKQ/3Dv2UVdvRo4caf3uu++sVqvVOm/ePOs777zDvWNHDekP94591Nabn3/+2RoREWEtLS21Wq1Wa3h4uNVisRju3mFZGur00UcfacSIEZIkf39//fTTTyouLpYkff311/rNb36j6667Ti4uLhoyZIg++uijWo9B42pIf2Afdd0HCxYssO2v7zFoPA3pD+yjrt6kpqaqc+fOkiRvb2/9+OOP3Dt21JD+wD5q603r1q21adMmubm56dy5cyouLlaHDh0Md+8QblCnH374Qe3bt7d99vb21qlTpyRJp06dkre39yX7ajsGjash/ZGko0ePatasWZo2bZo++OAD+xZ9lajrPvD09LzsY9B4GtIfiXvHHurbm++//14ffPCBhgwZwr1jRw3pj8S9Yw/1uQ/++te/auTIkRo9erR8fHwMd+/wzA0um7UBbw9vyDFomPr81r6+vpo7d67GjBmjr7/+WhEREdq9e7fc3d3tUOHVi3vHuXHvOK/qelNQUKBZs2ZpyZIlVf7FrLZj0DTq0x/uHceorjcPPvigIiIiNHPmzGr/rpjmfu8wc4M6dezYUT/88IPt8/fff68OHTpUuy8/P18dO3as9Rg0rob0p1OnTho7dqxMJpO6du2qa6+9Vvn5+Xav3egach9w79hPQ35r7h37qKs3xcXFmjlzpubPn69BgwbV6xg0nob0h3vHPmrrzenTp7Vv3z5JUqtWrTR48GB99tlnhrt3CDeo08CBA7Vr1y5J0sGDB9WxY0fblHOXLl1UXFysvLw8lZeX6+2339bAgQNrPQaNqyH9efPNN5WYmCjpwtK1goICderUyWHfwagach9w79hPQ35r7h37qKs38fHx+uMf/6jBgwfX+xg0nob0h3vHPmrrTXl5ucxms86ePStJ+uKLL+Tn52e4e8dkbe5zT7CLlStX6tNPP5XJZNKSJUv05Zdfqm3btho5cqT27dunlStXSpLuvPNOPfDAA9Ue07t3b0d+BUO73P4UFxfr0UcfVVFRkcrKyjR37lzbmmg0rtp6ExUVpZMnT+rIkSMKCgrS3XffrdDQUO4dO7rc/gwdOpR7x05q6s2gQYN0yy236Oabb7aNHT9+vKZOncq9Y0eX259x48Zx79hJbf+7lpqaqq1bt6pFixbq1auX/vSnP8lkMhnq3iHcAAAAADAElqUBAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABD+H8gvmy+4CasWAAAAABJRU5ErkJggg==\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"J_7qSNv59qbd"},"source":["xg_preds = np.expm1(xgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = xg_preds"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"oRFu11Mb9vTF"},"source":["sol_fl.to_csv(\"feature_xg.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"9SsnVAxA-MNl"},"source":["## Frequency Features"]},{"cell_type":"code","metadata":{"id":"ikPqI_tN-L1h","executionInfo":{"status":"ok","timestamp":1603350335127,"user_tz":-330,"elapsed":1726,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"3ac4c7c1-74d2-419a-bb01-bc19f30da4a5","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["df['ADDRESS'].nunique()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["13322"]},"metadata":{"tags":[]},"execution_count":39}]},{"cell_type":"code","metadata":{"id":"fY7yGpAo_PEN","executionInfo":{"status":"ok","timestamp":1603350336280,"user_tz":-330,"elapsed":1451,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"d50cf28d-5046-4be4-8163-38a3fab5ef45","colab":{"base_uri":"https://localhost:8080/","height":221}},"source":["df['ADDRESS'].value_counts()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Zirakpur,Chandigarh               1560\n","Raj Nagar Extension,Ghaziabad      731\n","Whitefield,Bangalore               677\n","Sector-137 Noida,Noida             470\n","New Town,Kolkata                   464\n","                                  ... \n","Flat,Agartala                        1\n","Godhuli Road,Asansol                 1\n","Eldeco,Neemrana                      1\n","Goregoan W ,,Maharashtra             1\n","Nr.parivar Char Rasta,Vadodara       1\n","Name: ADDRESS, Length: 13322, dtype: int64"]},"metadata":{"tags":[]},"execution_count":40}]},{"cell_type":"code","metadata":{"id":"5fvjsvsnDr9g"},"source":["add_len = []\n","for c in df['ADDRESS']:\n","  add_len.append(len(c))\n","\n","dt = pd.DataFrame()\n","dt['values'] = add_len"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"X8ArWbC5EKsT","executionInfo":{"status":"ok","timestamp":1603350341432,"user_tz":-330,"elapsed":1129,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"4aa36d8f-08eb-419f-d7fb-35e2f508ddbb","colab":{"base_uri":"https://localhost:8080/","height":221}},"source":["dt['values'].value_counts()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["21    9673\n","22    8106\n","19    7890\n","18    6813\n","20    6244\n","      ... \n","80       1\n","81       1\n","72       1\n","61       1\n","67       1\n","Name: values, Length: 67, dtype: int64"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"code","metadata":{"id":"vQB9iAOSEp_Y","executionInfo":{"status":"ok","timestamp":1603350345463,"user_tz":-330,"elapsed":1476,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"9cc61b79-d677-4c9b-de49-670f481010c5","colab":{"base_uri":"https://localhost:8080/","height":221}},"source":["df['address_counts'] = dt['values'].map(dt['values'].value_counts())\n","df['address_counts']"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0        9673\n","1        4186\n","2        6212\n","3        2934\n","4        6212\n","         ... \n","98166    8106\n","98167    5131\n","98168    6813\n","98169    3201\n","98170     575\n","Name: address_counts, Length: 98171, dtype: int64"]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"code","metadata":{"id":"RibNAgRfFJ9m"},"source":["train_proc, test_proc, features = split_df_and_get_features(df, train.shape[0])\n","features = [c for c in df.columns if c not in [ TARGET_COL]]\n","cat_num_cols = [c for c in features if c not in ['ADDRESS']]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"uWRvjkuHFV0u","executionInfo":{"status":"ok","timestamp":1603350354541,"user_tz":-330,"elapsed":1699,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"87335ad0-3e69-4cf8-a9be-1fdf441ee6b6","colab":{"base_uri":"https://localhost:8080/","height":204}},"source":["cat_num_cols"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['POSTED_BY',\n"," 'UNDER_CONSTRUCTION',\n"," 'RERA',\n"," 'BHK_NO.',\n"," 'BHK_OR_RK',\n"," 'SQUARE_FT',\n"," 'READY_TO_MOVE',\n"," 'RESALE',\n"," 'LONGITUDE',\n"," 'LATITUDE',\n"," 'address_counts']"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"code","metadata":{"id":"DwnZB4efFc29","executionInfo":{"status":"ok","timestamp":1603285560474,"user_tz":-330,"elapsed":119083,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"7d384ef2-f815-46d6-cb53-c918d01758a0","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = XGBRegressor(n_estimators = 1000,\n","                    max_depth = 6,\n","                    learning_rate = 0.05,\n","                    colsample_bytree = 0.5,\n","                    random_state=1452)\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","xgb_oofs, xgb_preds, fi = run_gradient_boosting(clf, fit_params, train_proc, test_proc, cat_num_cols)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","[13:04:01] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.65002\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.346963\n","[400]\tvalidation_0-rmse:0.329676\n","[600]\tvalidation_0-rmse:0.319474\n","[800]\tvalidation_0-rmse:0.313698\n","[999]\tvalidation_0-rmse:0.309139\n","\n","AV metric score for validation set is 0.3091392640727477\n","\n","------------- Fold 2 -------------\n","[13:04:25] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.6585\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.353871\n","[400]\tvalidation_0-rmse:0.336382\n","[600]\tvalidation_0-rmse:0.325927\n","[800]\tvalidation_0-rmse:0.320726\n","[999]\tvalidation_0-rmse:0.317308\n","\n","AV metric score for validation set is 0.31730839585662274\n","\n","------------- Fold 3 -------------\n","[13:04:48] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.65329\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.355119\n","[400]\tvalidation_0-rmse:0.338531\n","[600]\tvalidation_0-rmse:0.329998\n","[800]\tvalidation_0-rmse:0.324505\n","[999]\tvalidation_0-rmse:0.320701\n","\n","AV metric score for validation set is 0.3207001767977069\n","\n","------------- Fold 4 -------------\n","[13:05:11] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.63982\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.34841\n","[400]\tvalidation_0-rmse:0.331572\n","[600]\tvalidation_0-rmse:0.321396\n","[800]\tvalidation_0-rmse:0.316888\n","[999]\tvalidation_0-rmse:0.313006\n","\n","AV metric score for validation set is 0.31300601261861644\n","\n","------------- Fold 5 -------------\n","[13:05:35] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:3.64872\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.370562\n","[400]\tvalidation_0-rmse:0.352805\n","[600]\tvalidation_0-rmse:0.343617\n","[800]\tvalidation_0-rmse:0.339357\n","[999]\tvalidation_0-rmse:0.335647\n","\n","AV metric score for validation set is 0.33564762218989663\n","\n","\n","AV metric for oofs is 0.3192902482806073\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAzcAAAFiCAYAAADLDSa3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde1RVdf7/8dcBQRN1EPNSiYGIiRljYvk1Hc1bXpm8ZGUKZWE5Xig1fpxMjDFTTNMU076jEGp2NSYHIXVyym5GdmpSDE0FUirJJEMs5HZ+f7g8307cETjHzfOx1qyJz/7svd/7vDlr9Wp/9sZktVqtAgAAAIArnIujCwAAAACAukC4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAITRxdAIzDYrE4ugQAAAA0AkFBQeWOE25Qpyr6RYNjpKenKyAgwNFl4A/oi/OhJ86Hnjgn+uJ8GmNPKvsP6ixLAwAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhsCroFGnfMzJji4BZWQ4ugCUi744H3rifOiJc6Ivzqdhe5IVM7pBz1cT3LkBAAAAYAiEGwAAAACGQLgBAAAAYAg8c1PHsrOzFRwcrB49eshqtaqwsFDTpk3TsGHD9PHHHys2NlZWq1UXLlzQ3Xffrfvuu0+SdOrUKUVFRem3335TQUGB/P399fe//12bN2/W3r17lZeXp5ycHPn7+0uS4uLiNGLECHXo0EGurq6288+YMUPe3t52Nbi6umr69Onq27dvhXWnpqbq0UcftR2/pKRETz/9tK6//nqNGzdOzz//vPz8/CRJX331lZ555hm9/vrrMplM9fVRAgAAADVCuKkHvr6+2rJliyTp7NmzGjdunLp3766nn35acXFxuu6661RYWKh58+bJzc1NEydO1OrVqzV+/HiNHDlSkrRw4UJ9+OGHCgsLU1hYmFJTU7V161atWbPG7lwbNmyQh4eH3Vh2drZdDSdOnND06dO1cuVKdevWrcK6b731Vtvx3377bW3atEmLFi3S3LlztXz5cr344ouSpGeffVZms5lgAwAAAKfCsrR65unpqbZt22r58uUKCQnRddddJ0lyd3fXE088oc2bN0uS8vLylJ+fb9tv0aJFGjJkSJ3U0KlTJ02fPl2vvPJKtff56aef1K5dO0nSoEGDVFBQoM8++0zvvvuu2rVrp169etVJbQAAAEBd4c5NPcvOztbZs2fVunVrde/e3W7btddeq59//lmlpaWaNm2aZsyYocTERPXr10/BwcG6/vrr66yOHj166LXXXqt0zmeffaaQkBCdP39ev/76q+3OjySZzWYtXLhQhYWFeuGFF+qsLgAAAFxZ0tPTHV1ChQg39SAzM1MhISGyWq1q2rSpli1bpo0bN6qkpKTc+SaTST179tSePXv08ccf64MPPtBdd92lVatWqX///pWea9q0aXbP3GzYsKHceefPn7ebV57fL0vbv3+/HnvsMW3dulWS1K1bN/n4+Kh169a2u08AAABofAICAhx6fovFUuE2wk09+P3zLpd07txZaWlp6t27t23su+++U9u2bWUymVRQUKCrrrpKQ4cO1dChQ3XzzTcrOTm5ynBT3jM35UlLS6vRL+Itt9yirKwslZSU2EKRt7e3WrduXe1jAAAAAA2JZ24ayKRJk7R161adOHFCklRUVKSYmBjdf//9Ki0tVXBwsI4dO2abf+rUKXXs2LFOzn3ixAklJCTogQceqNE+LVu2rPJuDwAAAOAsuHPTQK699lqtWLFCERERtldE//Wvf9XYsWMlSc8995yio6Nt8zt27KiFCxdWedw/LksbM2aM+vXrZ1saV1hYqJKSEi1cuFDXXnttpce69MyNdDF8PfPMM7W4UgAAAMAxTFar1eroImAMFotFE9485egyAAAAUI+yYkY79PwWi0VBQUHlbuPOTSMza9Ys/fLLL3ZjLVq00Pr16x1UEQAAAFA3CDeNzNq1a+v1+I5O8rCXnp7u8DeaoCz64nzoifOhJ86JvjgfemKPFwoAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCDQAAAABDaOLoAmAsPuZkR5eAMjIcXQDKRV+cDz1xPvTEOdVdX7JiRtfZsQCJOzcAAAAADIJwAwAAAMAQCDcAAAAADIFnburY1q1btX37drm7u6ugoEBz587VbbfdpuTkZMXFxcnNzU0lJSWaPn26hg4dKkkaPHiwkpKS5OHhIUnKzs5WeHi4EhMTbcd96KGH1LRpU61bt842NnjwYHXo0EGurq4qLS1Vs2bNtGTJErVv315ms1mHDh2Sp6en3fypU6eWW3dqaqoeffRR+fv728b+8pe/KDc3V4cOHdLp06f122+/qVOnTvrTn/6ktWvX1unnBgAAAFwuwk0dys7O1htvvKFt27bJzc1NWVlZWrBggTw8PBQfH6/4+Hh5enoqPz9f06ZNU4sWLfQ///M/VR73zJkzOn78uAoKCnTu3Dm1bNnStm3Dhg22UJSYmKjVq1dryZIlkqS5c+dq0KBB1a7/1ltv1Zo1a8rdlpiYqKNHjyoyMrLaxwMAAAAaEsvS6lB+fr4uXLigoqIiSZKPj49efvllbdq0SeHh4ba7KC1atNDcuXOVkJBQreOmpKRo0KBB6tevn3bv3l3hvD//+c/69ttvL/s6AAAAgCsR4aYOdevWTYGBgRoyZIjMZrNSUlJUXFysjIwMBQQE2M0NCAhQRkb1XqW4Y8cOjR49WmPGjFFKSkqF83bu3Knu3btf1jUAAAAAVyqWpdWxZ599VsePH9eHH36ojRs36tVXX1VpaalKS0vt5lmtVlmt1gqPYzKZJEknT55UTk6OgoKCVFxcrAULFig3N1deXl6SpGnTpsnV1VUnT55UUFCQ/v73v9uOsXLlSsXHx9t+njt3rm6++eYKz/nZZ58pJCTE9vNf//pXTZw4sWYfAAAAQDWlp6c7uoQrXkFBAZ/j7xBu6pDValVhYaH8/Pzk5+enkJAQjRw5Uu3bt1daWpo6dOhgm5uenq4uXbpIklq3bq1z587Znp3Jzc1V27ZtJV28a3PhwgWNHTtWklRcXKx33nlHkydPlvR/z9y8/PLLysrKUosWLWznqMtnbgAAAOraH1e2oObS09Mb3edosVgq3MaytDq0bds2RUVF2e7InDt3TqWlpQoLC9OaNWuUm5sr6eKzOc8//7xCQ0MlSX379tXbb78t6WJA2rZtmwYMGCBJSk5OVkJCgrZv367t27dr7dq1Sk5OLnPue++9V5999pkOHz7cEJcKAAAAOB3u3NSh8ePHKyMjQxMnTlTz5s1ty8gGDhyon3/+WZMmTZKHh4dMJpOmTp2qvn37SpJmzpypxYsXa/LkySopKdGtt96qe++9V4cPH5a7u7tuuOEG2zl69+6tM2fO6IcffrA7d5MmTfT//t//U3R0tF599VVJZZel+fn5KTo6uv4/CAAAAMABTNbKHvxAnYuKilK3bt1sy8qMxGKxaMKbpxxdBgAAuEJkxYx2dAlXvMa6LC0oKKjcbdy5aWAzZ87U7NmztXPnTr3wwgtq1apVg55/1qxZ+uWXX+zGWrRoofXr1zdoHQAAAEBdI9w0sA4dOujNN9902PnXrl3rsHMDAAAA9YlwgzrF7WXn0hhvVV8J6IvzoSfOh544J/oCZ8fb0gAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCEQbgAAAAAYAuEGAAAAgCE0cXQBMBYfc7KjS0AZGY4uAOVy7r5kxYx2dAkAANQYd24AAAAAGALhBgAAAIAhsCzNwbKzsxUeHq7ExMQy2x566CE1bdpU69at05EjR7R48WJJ0n//+1/ddNNNcnV11QMPPKCvv/5arVu3lq+vr1588UVJ0hdffKFevXpJkiIiIrR8+XJFRUWpa9eutuP36dNHqampSkxM1OrVq9WpUyeVlpaqdevWioyMlLe3t7KzsxUcHKwePXrY1RYbGytPT8/6+lgAAACAGiPcOKkzZ87o+PHjKigo0Llz53TDDTdoy5YtkqTBgwdrw4YN8vDwkCR9/fXXkqR+/fqpX79+ki4Gl0vzq2PUqFGKjIyUJH300UcKCwvTv/71L0mSr69vjY4FAAAAOALL0pxUSkqKBg0apH79+mn37t0Neu7+/fvrlltu0b///e8GPS8AAABwOQg3TmrHjh0aPXq0xowZo5SUlAY/f48ePXTs2LEGPy8AAABQWyxLc0InT55UTk6OgoKCVFxcrAULFig3N1deXl51eh6TyVThtvPnz8vV1VWSlJmZqZCQENs2X19fLVq0qE5rAeBc0tPTHV1CgyooKGh01+zs6Ilzoi/Oh57YI9w4oR07dujChQsaO3asJKm4uFjvvPOOJk+eXOtjtm7dWnl5ebafc3Nz1bZt2wrnp6WlafToi3/ngmdugMYnICDA0SU0qPT09EZ3zc6Onjgn+uJ8GmNPLBZLhdtYluaEkpOTlZCQoO3bt2v79u1au3atkpMv749j9u3b1/aCAEl68803NWDAgHLn7t27VxkZGRo8ePBlnRMAAABoSNy5cQK/X/Z1+PBh29vRLundu7fOnDmjH374Qddcc02tznHPPffoueee07333itXV1f5+fnpiSeesG1PSUlRWlqazp8/Ly8vL8XGxsrFxaVMfZdEREQoMDCwVrUAAAAA9cFktVqtji4CxmCxWDThzVOOLgNAHciKGe3oEhpUY1zW4ezoiXOiL86nMfbEYrEoKCio3G0sSwMAAABgCIQbAAAAAIZAuAEAAABgCLxQAHWqsa3Td3aNcR3ulYC+AABQP7hzAwAAAMAQCDcAAAAADIFwAwAAAMAQCDcAAAAADIFwAwAAAMAQCDcAAAAADIFwAwAAAMAQCDcAAAAADIFwAwAAAMAQCDcAAAAADIFwAwAAAMAQCDcAAAAADIFwAwAAAMAQCDcAAAAADKGJowuAsfiYkx1dAsrIcHQBjUpWzGhHlwAAQKPFnRsAAAAAhkC4AQAAAGAILEurJ9nZ2QoPD1diYqLdeFJSkl566SW5ubmpqKhIjzzyiIYPHy5JCgkJ0Y033iiz2WybHxISoi1btkiStm/fri1btsjd3V0FBQX661//qgceeMA2LyoqSh988IH27t2rvLw85eTkyN/fX5IUFxenv/zlL0pNTbUdOzU1VVu3btWaNWtkNpt16NAheXp6qqioSD169NC8efN01VVXKTExUatXr1anTp1s+15zzTV69tln6+WzAwAAAGqDcNOAvvzySyUkJCg+Pl6enp7Kz8/XtGnT1KpVK/Xt21eS9Pnnn+u7777TddddZ7evxWLRq6++qoSEBLVo0UL5+fmaOnWqunTpov79+9vmhYWFKSwszC64VNfcuXM1aNAglZaWat26dZo/f75WrVolSRo1apQiIyPr4FMAAAAA6gfL0hrQ5s2bFR4eLk9PT0lSixYtNHfuXCUkJNjmzJ49W6tXry6z78svv6zZs2erRYsWtn1feeUVu2BTV1xcXDRjxgylp6crJyenzo8PAAAA1AfCTQPKyMhQQECA3VhAQIAyMzNtPw8cOFA5OTk6fPhwmX27du1qN+bm5lZvtbq4uKh79+7KyOBNWwAAALgysCytAZlMJpWWltqNWa1WubjYZ8x58+ZpxYoV2rhxo23MxcVFJSUlki4ub1u5cqUuXLig7t27Kzo6ul7qPX/+vK22lJQUpaWl2baNHDlS9913X72cF7iSpaenVzmnoKCgWvPQcOiJ86Enzom+OB96Yo9w04A6d+6stLQ0dejQwTaWnp6uLl262M0LDAyUh4eH9u3bZxvr0qWLDh48qA4dOujmm2/Wli1bbM/VVJe7u7tKS0ttgSU3N1ft2rUrd25xcbGOHj0qf39/fffddzxzA1TTH+/Olic9Pb1a89Bw6InzoSfOib44n8bYE4vFUuE2lqU1oNDQUMXGxio3N1eSlJ+fr1WrVtneePZ7c+bM0fPPP2+375o1a3TmzBlJUmlpqT799FO5u7tX+/y9e/dWcvLFP7JZVFSkt99+W3/5y1/KnRsbG6uBAwfKy8ur2scHAAAAHIk7N/UoMzNTISEhtp8jIiI0Z84chYWF2V4FHRoaqt69e5fZ18fHR927d9exY8ckSTfddJMiIyP1yCOPyM3NTRcuXFDPnj0VFRVV7XqioqIUHR2tN954Q0VFRRo5cqQGDhxo275y5UrFx8fr7Nmz6tmzp+bPn2/b9sdladLF10vXJFwBAAAA9clktVqtji4CxmCxWDThzVOOLgNwqKyY0VXOaYxLCJwdPXE+9MQ50Rfn0xh7YrFYFBQUVO42lqUBAAAAMATCDQAAAABD4Jkb1KnqLMlBw2mMt6oBAEDjxZ0bAAAAAIZAuAEAAABgCIQbAAAAAIZAuAEAAABgCIQbAAAAAIZAuAEAAABgCIQbAAAAAIZAuAEAAABgCIQbAAAAAIZAuAEAAABgCIQbAAAAAIZAuAEAAABgCIQbAAAAAIZAuAEAAABgCE0cXQCMxcec7OgSUEaGowu44mTFjHZ0CQAAoBa4cwMAAADAEAg3AAAAAAyBcAMAAADAEAg3AAAAAAyBcONksrOzdfPNNyskJEQhISG655579PnnnysxMVHLli2zmxsSEqJvvvlG2dnZGj9+vG383Xff1eTJk1VYWFjheUJCQhQTE1Nm7JKkpCSNHz9e99xzj8aPH69du3bV0RUCAAAA9YO3pTkhX19fbdmyRZK0f/9+rV+/XqNHV+/tTUeOHNGaNWuUkJAgd3f3Sud+/vnn+u6773TdddfZjX/55ZdKSEhQfHy8PD09lZ+fr2nTpqlVq1bq27dv7S4KAAAAqGfcuXFyP/30k9q1a1etubm5uYqMjNSqVavk5eVV5fzZs2dr9erVZcY3b96s8PBweXp6SpJatGihuXPnKiEhoUa1AwAAAA2JOzdOKDMzUyEhIbpw4YJycnIUFxenAwcOKCUlRWlpabZ56enptn8uLi5WeHi4Ro4cKT8/v2qdZ+DAgYqPj9fhw4fVrVs323hGRoYCAgLs5gYEBCgzM/Myrwy4Mvz+u1UfCgoK6v0cqBl64nzoiXOiL86Hntgj3Dih3y9LO378uB577DGFhoZq1KhRioyMtM37/TMymZmZMpvN2rRpk+6880516NChWueaN2+eVqxYoY0bN9rGTCaTSktL7eZZrVa5uHCjD43DH8N9XUtPT6/3c6Bm6InzoSfOib44n8bYE4vFUuE2/m3Vyfn5+alp06ZVBgt/f39NnjxZc+fO1eOPP66SkpJqHT8wMFAeHh7at2+fbaxz5852d4iki1+cLl261PwCAAAAgAZCuHFyZ8+e1enTp1VcXFyt+SNGjJC3t7deeOGFap9jzpw5ev75520/h4aGKjY2Vrm5uZKk/Px8rVq1Sg888ECNagcAAAAaEsvSnNClZ24k6cKFC4qKilJeXl6191+wYIEmTJigPn36qE+fPlXO9/HxUffu3XXs2DFJUs+ePTVnzhyFhYXJzc1NRUVFCg0NVe/evSVJzzzzjEJDQ+Xt7V2LqwMAAADqh8lqtVodXQSMwWKxaMKbpxxdBnDZsmKq9+r12mqM66OdHT1xPvTEOdEX59MYe2KxWBQUFFTuNu7cGNiePXvKfX1zaGiohg0b1vAFAQAAAPWIcGNgQ4YM0ZAhQxr0nPX9X7xRM43xv+YAAIDGixcKAAAAADAEwg0AAAAAQyDcAAAAADAEwg0AAAAAQyDcAAAAADAEwg0AAAAAQyDcAAAAADAEwg0AAAAAQ6gy3OTn5+vFF1/UM888I0n69NNPlZeXV++FAQAAAEBNVBluzGazWrVqpYMHD0qScnNzNW/evHovDAAAAABqospwc/78ed13331yc3OTJI0aNUoFBQX1XhgAAAAA1ESV4aa0tFQnTpyQyWSSJH3wwQcqLS2t98IAAAAAoCaaVDVh4cKFWrhwodLS0tS/f3/dcMMNWrRoUUPUBgAAAADVVmW4+e9//6uEhIQGKAUAAAAAaq/KcPPxxx+rZ8+e8vPza4h6cIXzMSc7ugRDyYoZ7egSAAAArhhVhpu0tDQFBwfrqquusr1UwGQyad++ffVeHAAAAABUV5XhZvfu3Q1RBwAAAABclirDTUhIiO1Nab+3efPmeikI9rKzsxUcHKwePXpIkgoLC9W1a1dFR0dr2LBh6tChg1xdXW3zZ8yYob59+2rr1q3avn273N3dVVBQoLlz5+q2226zzXvooYfUtGlTrVu3zjY2ePBgJSUlycPDwzaWmpqqRx99VP7+/rYxNzc3xcfH1+dlAwAAADVWrbelXVJcXCyLxaJz587Va1Gw5+vrqy1btth+NpvNSkpKkiRt2LDBLoxIFwPRG2+8oW3btsnNzU1ZWVlasGCBLdycOXNGx48fV0FBgc6dO6eWLVtWev5bb71Va9asqeOrAgAAAOpWleHm9//FXpICAgL00EMP1VtBqFpgYKC+/fbbCrfn5+frwoULKioqkpubm3x8fPTyyy/btqekpGjQoEHKy8vT7t27NWHChIYoGwAAAKhXVYabrVu32v18+vRp/fjjj/VWECpXVFSkPXv2aNKkSdq+fXu5c7p166bAwEANGTJEAwcO1IABA3THHXeoSZOL7d6xY4ciIiJ07tw5vfzyy4QbAAAAGEKV4ebnn3+2+9nT01P/+Mc/6q0glJWZmamQkBBJ0pEjRxQWFqahQ4dqyZIlmjZtmt0zNxs2bFCzZs307LPP6vjx4/rwww+1ceNGvfrqq9q8ebOys7OVk5OjoKAgFRcXa8GCBcrNzZWXl1eF5//ss89s55ekW265ReHh4fV3wbBJT0+/rP0LCgou+xioe/TF+dAT50NPnBN9cT70xF6V4cbFxUUzZsywG4uJiZHZbK63omDv98/chIeHy9fX17atvGdurFarCgsL5efnJz8/P4WEhGjkyJH6/vvvtWPHDl24cEFjx46VdPE5qnfeeUeTJ0+u8Pw8c+M4AQEBl7V/enr6ZR8DdY++OB964nzoiXOiL86nMfbEYrFUuK3CcLN7927t2LFDn3/+uY4cOWIbLy4u1tdff024cZCIiAiFhYWpf//+Fc7Ztm2b9u/fr2XLlslkMuncuXMqLS1VmzZtlJycrISEBN1www2SpP3792vVqlWVhhsAAADgSlBhuLnjjjvUvXt3Pf3003b/4uvi4iI/P78GKQ5leXt7a/jw4Vq/fr0klVmWNmbMGN11113KyMjQxIkT1bx5c9vys6ysLLm7u9uCjST17t1bZ86c0Q8//FDmeGPGjJGPj0+ZZWmStGzZMl177bX1fbkAAABAtZmsVqu1qklHjx7V2bNnJV18oH3p0qW2VxEDl1gsFk1485SjyzCUrJjRl7V/Y7xVfSWgL86HnjgfeuKc6IvzaYw9sVgsCgoKKndbtf7OTUZGhjIyMhQYGKi0tDSFhYXVeZEAAAAAcDlcqppw7Ngxvfzyy/Lz89OLL76oN998U8ePH2+I2gAAAACg2qoMNyUlJcrPz5ck5ebm6pprrtHhw4frvTAAAAAAqIkql6VNmTJF77zzjqZMmaLg4GA1adJEt912W0PUhivQ5T4jAgAAANRWleEmODjY9s+DBw/W+fPn5enpWa9FAQAAAEBNVbks7ZtvvtGDDz6oe+65R25ubnr77bd16NChhqgNAAAAAKqtynDz9NNP68knn5S7u7skqX///lq8eHG9FwYAAAAANVFluGnSpIndH+3s0qWLXFyq3A0AAAAAGlSVz9y0bNlS27Zt02+//aavvvpK//73v9WmTZuGqA0AAAAAqq3CWzBPPPGEJMnDw0OnT59W69at9Y9//EOtWrVSTExMgxUIAAAAANVR4Z2b48ePa9y4cTpx4oR8fHxs46dOndLu3bu1bdu2hqgPAAAAAKqlwnDzyiuv6Mcff1RMTIwiIyMbsiYAAAAAqLEKw02TJk107bXXas2aNQ1ZDwAAAADUCq89AwAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhlDlH/EEasLHnOzoEmokK2a0o0sAAABAHeHODQAAAABDINwAAAAAMATCDQAAAABDINwAAAAAMATCTR1YtmyZEhMT7cbOnz+vwYMHO6iiurF//36dOXPG0WUAAAAA1UK4QYXeeustwg0AAACuGLwKuhry8/M1b948/frrryooKFBUVJQyMzO1ceNGtW/fXs2aNZO/v7/y8/M1e/ZsXbhwQUFBQbb977jjDg0YMEBt2rTR+PHj9eSTT6qoqEiurq5avHixrr32Wi1evFhpaWkqKSnRpEmTNH78+HLHylNUVCSz2azvvvtOTZs21bPPPisvLy8tXLhQJ0+eVGFhocLDw9W/f38NHjxYSUlJ8vDw0LJly+Tv7y9Jslgsys3NVWZmph566CFde+21evfdd3X06FHFxsYqPj6+WrUAAAAAjkK4qYbTp09r4sSJGjp0qPbt26cNGzbo4MGDeuutt9SqVSvbv+hv375d/v7+mj9/vlJSUpScfPFvvhQXF2vAgAEaMGCA5s+frwcffFC33Xab9u7dq3Xr1unxxx/X+++/r3fffVdFRUX65z//qbNnz5YZq8jbb7+tq6++Ws8995ySk5O1Z88eNW/eXO7u7nr55ZeVk5Oj0NBQ7dq1q8JjfPPNN3rttdeUlZWluXPnavv27QoICFBUVJSaN29e7VquNOnp6Y4uoV4VFBQY/hqvRPTF+dAT50NPnBN9cT70xB7hphquvvpqrVu3TnFxcSosLNSFCxfk4eGhNm3aSJJ69eolSTp+/LhuueUWSdKtt95qd4zAwEBJ0pdffqnMzEytX79eJSUl8vLykqenp3x8fPS3v/1NI0aM0NixY+Xu7l5mrCKHDh1S3759JfF2RdwAAB7QSURBVEmjR1/8o5SLFy9Wnz59JEnt27eXu7u7zp49W+ExevbsKVdXV3Xo0EHnzp2z21ZefUYREBDg6BLqVXp6uuGv8UpEX5wPPXE+9MQ50Rfn0xh7YrFYKtxGuKmGTZs2qX379lq+fLkOHjwos9ksF5f/e1zJarXa/v/SeGlpqd0x3NzcbP+/evVqtWvXzm77xo0bdejQIe3YsUPbt29XfHx8uWPlcXV1LXO+39clSYWFhXY1SxeXs13SpEnlvwrVrQUAAABwFF4oUA0///yzOnXqJEl699131bJlS507d055eXkqKirSF198IUny9fVVWlqaJCk1NbXcY/35z3/Wu+++K0nat2+fkpKSlJ2drc2bN+vGG29UZGSkzp49W+5YRW666SZ9+umnkqT33ntPL774om666SZbDT/88INcXFzUqlUrtWjRQqdPn1ZJSYm++uqrSq/bZDKppKSkRrUAAAAAjsKdm2q48847FRkZqZ07d2ry5MnasWOHZs6cqSlTpui6666zPZQ/duxYzZw5U/fff7/dCwV+b9asWZo/f76Sk5NlMpm0dOlStWvXTl9++aVSUlLk5uamCRMmlDtWkVGjRumTTz7RlClT1KRJEy1btkxt2rTRZ599ppCQEBUVFWnRokWSpClTpmj69Ony9fVVly5dKr3uW2+9VeHh4YqNja12LQAAAICjmKy/X7sEXAaLxaIJb55ydBk1khUz2tEl1KvGuA73SkBfnA89cT70xDnRF+fTGHtisVgqvJHAnZsrSHR0tI4fP15mfMOGDWrWrJkDKgIAAACcB+HmChIdHe3oEqpk9DshAAAAcF68UAAAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABhCE0cXAGPxMSc7uoRqyYoZ7egSAAAAUMe4cwMAAADAEAg3AAAAAAyBcAMAAADAEAz9zE12draCg4PVo0cPSVJhYaG6du2q6OhoDRs2TB06dJCrq6tt/owZM9S3b19J0o4dOxQZGakPP/xQXl5ekqTY2FglJSWpffv2Ki4ulre3t8xms7y8vPTkk08qMDBQ99xzjyQpPz9f48aN0yuvvKK2bduWqW3jxo3au3ev8vLylJOTI39/f0lSXFyc8vPztXjxYmVlZUmSOnfurAULFsjT07PCazWbzTp9+rTi4uJsY++9956mT5+uPXv2qGPHjjpx4oSWLFmi06dPq7S0VL169VJERISKioo0atQo/ec//5Gbm5tt/3vuuUdRUVFatmyZfv31VzVv3ty27e6771ZwcHCN+gEAAADUJ0OHG0ny9fXVli1bbD+bzWYlJSVJkjZs2CAPD49y99uxY4e8vb21a9cuTZo0yTYeGhqqKVOmSJISExM1Y8YMvfbaa3rsscc0ZcoUBQcHq3nz5tq4caPuuuuucoONJIWFhSksLEypqanaunWr1qxZY9sWERGh4OBgrVy5UpK0c+dOzZw5U1u3bq30WrOzs5Wbm2sLYykpKfL29pYklZaWavbs2TKbzbYAFx8fr6ioKC1fvlw9e/bUJ598ooEDB0qSvv/+e+Xl5dmC4dKlS9W1a9dKzw8AAAA4UqNblhYYGKhvv/220jlnz57VgQMHZDablZxc8du/xo8fr6uuukpffvml2rZtqzvvvFPx8fHKycnRv//9bz3wwAM1ru/48ePKy8vT2LFjbWMjRoyQq6urDh48WOm+/fv31zvvvCNJKigoUFZWlq655hpJ0kcffSQfHx9bsJGkqVOn6sCBAzpz5ozGjBlj21e6GKhGj+aNYgAAALhyNKpwU1RUpD179ujGG2+sdN7OnTt1++236y9/+YuysrKUk5NT4dwePXro2LFjkqQHH3xQKSkpWrRokWbOnKmmTZvWuMbMzEwFBASUGQ8ICFBmZmal+95xxx22MPb+++/rtttus23LyMhQ9+7d7eabTCb5+/srKytLt99+uz777DMVFhZKuvgZjBkzpsb1AwAAAI5i+GVpmZmZCgkJkSQdOXJEYWFhGjp0qJYsWaJp06bZPXOzYcMGNWvWTDt27NCMGTPk6uqqESNGKCUlRVOnTi33+OfPn7cdo1mzZnrwwQf1yiuvaNSoUbWuuaSkpMyY1Wq1q7U81113nYqKivT9998rJSVFf/vb3/TFF19IuhhkKjtu06ZN1adPH3300Ue64YYbVFpaKh8fH9u8J554wu6ZmyVLltiWvF2J0tPTHV1CgygoKGg013oloS/Oh544H3rinOiL86En9gwfbn7/zE14eLh8fX1t28p75ubUqVP66quvFBMTI5PJpIKCArVs2bLCcJOWlqa7777b9rO3t7c6duxY63o7d+6stWvXlhlPT0/X+PHjq9x/+PDh+uc//1nmDlDnzp316quv2s21Wq06duyYLcSMGTNG27dvV1ZWVpm7NkZ75qa8u2NGlJ6e3miu9UpCX5wPPXE+9MQ50Rfn0xh7YrFYKtzWqJalRUREaMWKFfrtt98qnLNjxw5NnjxZ//rXv7R9+3bt3LlTv/zyi06cOFFm7uuvvy5PT09169atzmrs3Lmz2rZtq9dee802tmvXLrm6ulbrPMOHD9fmzZs1YMAAu/F+/fopOztbe/futY0lJCQoKCjI9ha2//mf/1F6erree++9y7rzBAAAADiC4e/c/J63t7eGDx+u9evXS1KZZWljxoxRcnKyli1bZhszmUwaO3as7VmWzZs3a9euXTp37pyuv/56xcTE1Hmdq1at0uLFi/X666/LZDKpU6dOWrFiRbX2vXTnaPjw4XbjLi4uiouL01NPPaXVq1fLarWqR48eWrBggW2Oq6ur+vTpo2PHjqldu3Z2+/9xWVqfPn00a9asy7hKAAAAoG6ZrFar1dFFwBgsFosmvHnK0WVUS1ZM43gTXGO8VX0loC/Oh544H3rinOiL82mMPbFYLAoKCip3W6O6c+MIa9euVWpqapnx2jyQf+DAAS1fvrzM+MiRI3XffffVukYAAADACAg39WzWrFl1tnwrMDDQ7g+SAgAAAPg/hBvUqcay3AsAAADOp1G9LQ0AAACAcRFuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABgC4QYAAACAIRBuAAAAABhCE0cXAGPxMSc7ugQ7WTGjHV0CAAAAGgh3bgAAAAAYAuEGAAAAgCGwLM1gsrOzFRwcrB49ekiSCgsL1bVrV0VHR2vYsGHq0KGDXF1dbfNnzJghb2/vCve5NDcnJ0e33367YmNjNXTo0Ia/MAAAAKAKhBsD8vX11ZYtW2w/m81mJSUlSZI2bNggDw8Pu/nZ2dkV7jN27FhJUnJysq6//nolJycTbgAAAOCUWJbWCAQGBurbb7+9rH127NihhQsX6pNPPtGvv/5a1yUCAAAAl41wY3BFRUXas2ePbrzxxlrvk5GRoXPnzum2225Tnz599J///Ke+ygUAAABqjWVpBpSZmamQkBBJ0pEjRxQWFqahQ4dqyZIlmjZtmt0zNxs2bKh0H+niXZtRo0ZJksaMGaPExESNGTOmIS+p1tLT0x1dgkMVFBQ0+s/AGdEX50NPnA89cU70xfnQE3uEGwP6/fMz4eHh8vX1tW0r75mbqvZJTk6WyWTS+++/r9LSUp08eVJ5eXlq1apVPV/J5QsICHB0CQ6Vnp7e6D8DZ0RfnA89cT70xDnRF+fTGHtisVgq3MayNIOLiIjQihUr9Ntvv9VqnwMHDsjDw0M7d+7U9u3blZSUpJEjR2rXrl31WDUAAABQc9y5MThvb28NHz5c69evl6Qyy9LGjBmjfv36VbhPQUGBxo8fb7d9woQJeuGFFzRx4sT6vwAAAACgmgg3BtOxY0clJibajc2dO9fu/8tT0T7l6d27t1566aXLqBIAAACoeyxLAwAAAGAIhBsAAAAAhkC4AQAAAGAIPHODOpUVM9rRJQAAAKCR4s4NAAAAAEMg3AAAAAAwBMINAAAAAEMg3AAAAAAwBMINAAAAAEMg3AAAAAAwBMINAAAAAEMg3AAAAAAwBMINAAAAAEMg3AAAAAAwBMINAAAAAEMg3AAAAAAwBMINAAAAAENo4ugCYCw+5uQ6P2ZWzOg6PyYAAACMhzs3AAAAAAyBcAMAAADAEAg3AAAAAAyBcAMAAADAEOrthQKpqanaunWr1qxZYxuLjY1V69atFR8fr6lTpyokJESSlJ2drbVr1yomJkZms1mHDh2Sp6enioqK1KNHD82bN09XXXWVEhMTtXr1anXq1Ml2zGuuuUbPPvus3X5Wq1VFRUWKiIhQ7969K6yxuLhYzz//vD766CNdddVVcnNz05NPPqkbbrhBkpSUlKSXXnpJbm5uKioq0iOPPKLhw4dLkkJCQnTjjTfKbDbbjhcSEqItW7YoPz9f8+fP15kzZ1RSUqLWrVtr2bJl+s9//qO33npLFy5c0NGjR9WjRw9J0rJlyxQZGalff/1VzZs3l9Vqlclk0lNPPaUuXbrIbDZr+PDhGjRokO1cgwcPVlJSkjw8PHTgwAEtX75chYWFKioq0uDBgzVz5kzFxcVp7969ysvLU05Ojvz9/SVJcXFxGjFihG3/EydOaMmSJTp9+rRKS0vVq1cvRUREqFmzZrbPfPfu3WratKkkyWw2a9asWerYseNl/Y4AAAAAdckhb0tr06aN3njjDY0bN04tWrQos33u3LkaNGiQSktLtW7dOs2fP1+rVq2SJI0aNUqRkZHlHvfSfpJ04sQJTZs2Tbt27aqwjo0bNyovL0///Oc/ZTKZ9MUXX2jWrFl65513dPDgQSUkJCg+Pl6enp7Kz8/XtGnT1KpVK/Xt21eS9Pnnn+u7777TddddZ3fchIQEBQYGKiwsTJK0bt06JSUlafLkyRo7dqyys7MVHh6uLVu22O23dOlSde3aVdLFcPj0009r06ZNlX6W+fn5ioiIUGxsrLp27aqioiI99thjevPNNxUWFqawsLByg+YlpaWlmj17tsxms+264uPjFRUVpeXLl0uSWrVqpU2bNunhhx+utBYAAADAkRyyLK1Zs2a69957FRcXV+k8FxcXzZgxQ+np6crJyanROTp16qT8/HyVlJRUOOe1117T448/LpPJJEnq1auX3nrrLTVp0kSbN29WeHi4PD09JUktWrTQ3LlzlZCQYNt/9uzZWr16dZnj5uXl6dy5c7afZ8yYocmTJ9eo/j//+c/69ttvq5yXlJSkIUOG2EKRm5ubli1bpgkTJlTrPB999JF8fHxswUaSpk6dqgMHDujMmTOSpPvuu09JSUk6e/Zsja4BAAAAaEgO+zs399xzj+666y7dd999lc5zcXFR9+7dlZGRUaPj79+/X23btpWrq2u528+dO6emTZuqVatWduOXfs7IyFBAQIDdtoCAAGVmZtp+HjhwoOLj43X48GF169bNNj558mQ9+OCD+uCDD9S/f3+NHj3abnt17Ny5U927d69yXkZGhgIDA+3GyrsbVtn+fzyPyWSSv7+/srKyJElNmzbV1KlT9eKLL9otw2so6enpDX5OoygoKODzc0L0xfnQE+dDT5wTfXE+9MReg4ebS3dJmjRpokceeUSxsbFVLnc6f/68XFwu3mRKSUlRWlqabdvIkSNtAWnlypWKj4/Xzz//rObNm+u5556r9LiV3dUxmUwqLS21G7NarbY6Lpk3b55WrFihjRs32sauv/567dy5U6mpqfroo490//33KyIiQnfddVel9TzxxBNq3ry5fvzxR3Xs2FFLly6tdL7JZJLJZKr0OqpS0f5Wq9UuGI4dO1YTJ07Ud999V+tz1dYfQyaqLz09nc/PCdEX50NPnA89cU70xfk0xp5YLJYKt9XbsjQvLy/l5eXZjeXm5qpt27a2n0eOHKlvvvnGdoegPMXFxTp69KjtYfhRo0Zpy5Yttv/9/s7P3LlztWXLFq1YsUIlJSXy9fWt8LgtW7ZUcXGxfvrpJ7vxQ4cOyWq1qnPnznYhSrr4y9OlSxe7scDAQHl4eGjfvn22sYKCArm5ual///4ym82KjY3V9u3bK6zlkqVLl2rLli0ym81yd3dXu3btJEmtW7cu81kWFRWpefPm6ty5sw4ePGi3LTc3t9ohpLzrtFqtOnbsmHx8fGxjLi4uFS7DAwAAAJxBvYUbHx8fnTp1yvbcSG5urlJTU9WrVy+7eXPmzNHKlSsrPE5sbKwGDhwoLy+vap+7W7duuvHGG/Xqq69WOm/y5MlaunSpiouLJV1MgWazWYWFhQoNDVVsbKxyc3MlXXxwf9WqVXrggQfKHGfOnDl6/vnnbT9PnTpVn3zyie3nU6dOydvbu9r1Dxo0SIWFhXr//fclSX379lVycrKtzh07digoKEiSFBwcrPfff18HDhyQJBUWFio6Otru/JXp16+fsrOztXfvXttYQkKCgoKCbM8bXXL77bfr1KlTOnLkSLWvBQAAAGgo9bYszc3NTStWrFBUVJSsVqusVqsWLFigq6++2m5enz59yoxdWl529uxZ9ezZU/Pnz7dt++OyNEnlvpjgscce01133aURI0aoTZs25dYYFhamF198UePGjdOf/vQntWzZUuvXr1fTpk3Vs2dPzZkzR2FhYbZXQYeGhpb7amkfHx91795dx44dk3TxDsyiRYv0wgsvyNXVVa1atVJ0dHS1PrdLnnjiCc2cOVN9+/bVgAEDdPz4cU2ePFnu7u66+uqrtXDhQkmSh4eHNmzYoKeeekoFBQVydXVVcHCwJk6cWK3zuLi4KC4uTk899ZRWr14tq9WqHj16aMGCBeXOf/zxx6t9bAAAAKAhmaxWq9XRRcAYLBaLJrx5qs6PmxUzus6P2Vg0xnW4VwL64nzoifOhJ86JvjifxtgTi8ViW8X0Rw57W1pD2bNnj93rmy8JDQ3VsGHDGr4gAAAAAPXC8OFmyJAhGjJkiKPLaDS4ywIAAABHccgf8QQAAACAuka4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAITRxdAIzFx5xc7blZMaPrsRIAAAA0Nty5AQAAAGAIhBsAAAAAhkC4AQAAAGAIPHNTh7KzsxUcHKwePXpIkgoLCxUREaETJ07o6NGjioyMtM0NCQlRVFSUmjdvrvDwcCUmJkqS3n33Xb300kt66aWX5O7uXu55SkpKtHr1an3wwQdyd3dX06ZNFRUVpa5du0qSbrzxRvXq1UuSVFxcrLZt22rJkiVq0aJFtevu2rWroqOj5erqqsGDByspKUkeHh46efKkHnnkEf3v//6vvL296+aDAwAAAOoA4aaO+fr6asuWLZKk/fv3a/369Ro9unoPzh85ckRr1qxRQkJChcFGkuLi4nTmzBklJibKxcVFx48f14wZM/T666/L09NTLVq0sNUgSbGxsdq0aZNmzpxZrbolyWw2KykpSWPHjrWN5efn69FHH9XixYsJNgAAAHA6LEurRz/99JPatWtXrbm5ubmKjIzUqlWr5OXlVencV199VZGRkXJxudg+Pz8/BQcH66233ip3fmBgoL799tsa1f7HfaxWqyIiIjR16lTbXSEAAADAmXDnpo5lZmYqJCREFy5cUE5OjuLi4nTgwAGlpKQoLS3NNi89Pd32z8XFxQoPD9fIkSPl5+dX6fHPnTsnd3d3tWrVym48ICBA7733Xpn5VqtVu3fvVvfu3at9DUVFRdqzZ48mTZpkG1u1apUKCwsVHBxc7eNU5fefAepHQUEBn7MToi/Oh544H3rinOiL86En9gg3dez3y7uOHz+uxx57TKGhoRo1alSZZ24uyczMlNls1qZNm3TnnXeqQ4cOlZ7DarWWO3bpTk5+fr7t+MeOHVNwcLCmTJlS6TEvhTLp4vK4sLAwDR061Lbd3d1d58+f1969ezVw4MBKj1VdAQEBdXIcVCw9PZ3P2QnRF+dDT5wPPXFO9MX5NMaeWCyWCrcRbuqRn5+fmjZtagsdFfH399fkyZPVpk0bPf7449q0aZNcXV3LnduyZUsVFRUpNzfXbvna4cOH1aVLF0mye+Zm2bJlat++vZo0qbzVvw9l4eHh8vX1tds+a9Ys5ebmaurUqQoICKj2cjsAAACgofDMTT06e/asTp8+reLi4mrNHzFihLy9vfXCCy9UOu++++7T0qVLVVJSIuniHaLk5GSNGzeuzNwZM2Zo69at+vHHH6tdd0REhFasWKHffvvNbtzb21uzZs3S448/rtLS0mofDwAAAGgIhJs6dml5V0hIiB5++GFFRUXJzc2t2vsvWLBAKSkpSk1NrXBOWFiYunTporFjx2rixImKjo7WsmXL1LJlyzJzW7ZsqbCwMC1btqzaNXh7e2v48OFav359mW1jx47V1VdfXe42AAAAwJFM1vIe4ABqwWKxaMKbp6o9Pyumeq/IRu01xnW4VwL64nzoifOhJ86JvjifxtgTi8WioKCgcrfxzI2T2rNnjxISEsqMh4aGatiwYbU6ZnR0tI4fP15mfMOGDWrWrFmtjgkAAAA4C8KNkxoyZIiGDBlSp8eMjo6u0+MBAAAAzoRwgzrFUjMAAAA4Ci8UAAAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhkC4AQAAAGAIhBsAAAAAhmCyWq1WRxcBY7BYLI4uAQAAAI1AUFBQueOEGwAAAACGwLI0AAAAAIZAuAEAAABgCE0cXQCuDEuWLNFXX30lk8mk+fPnKzAw0Lbtk08+0cqVK+Xq6qoBAwZo5syZVe6DulHTvqSmpurRRx+Vv7+/JKlr166KiopyVPmGVFlPLly4oIULF+ro0aNKTEys1j6oGzXtC9+V+ldZTz799FOtXLlSLi4u8vX11TPPPCMXFxe+K/Wspj3Zv38/35MGUFlf3njjDW3btk0uLi7q1q2bnnrqKZlMpsb9XbECVUhNTbU+/PDDVqvVaj127Jj17rvvtts+cuRI6/fff28tKSmxTpo0yXr06NEq98Hlq01fPv30U+vs2bMdUW6jUFVPFi1aZH3ppZes48aNq/Y+uHy16QvflfpVVU+GDRtm/eGHH6xWq9U6e/Zs6/vvv893pZ7Vpid8T+pfZX359ddfraGhodbCwkKr1Wq1hoSEWC0WS6P/rrAsDVXat2+fhg4dKkny8/PTL7/8ovz8fEnSyZMn9ac//UnXXHONXFxcNHDgQO3bt6/SfVA3atMX1K+qfu/nzJlj217dfXD5atMX1K+qepKYmKgOHTpIkry8vPTzzz/zXalntekJ6l9lfbnqqqu0adMmubm56bffflN+fr7atm3b6L8rhBtU6aefflLr1q1tP3t5een06dOSpNOnT8vLy6vMtsr2Qd2oTV8k6dixY5o+fbomTZqkjz/+uGGLNriqfu9btGhR431w+WrTF4nvSn2qbk9+/PFHffzxxxo4cCDflXpWm55IfE/qW3V+7//xj39o2LBhGjFihLy9vRv9d4VnblBj1lq8Pbw2+6BmqvMZ+/j4aNasWRo5cqROnjyp0NBQ7d69W+7u7g1QYePDd8U58V1xPuX15MyZM5o+fbqeeuopu39Rq2wf1J3q9ITvScMrry8PP/ywQkNDNW3atHL/9ktj+65w5wZVateunX766Sfbzz/++KPatm1b7racnBy1a9eu0n1QN2rTl/bt22vUqFEymUzq1KmTrr76auXk5DR47UZVm997viv1rzafMd+V+lVVT/Lz8zVt2jQ99thj6t+/f7X2weWpTU/4ntS/yvpy9uxZ7d+/X5LUrFkzDRgwQF988UWj/64QblClfv36adeuXZKkQ4cOqV27drbb0x07dlR+fr6ys7NVXFys9957T/369at0H9SN2vTlX//6l+Li4iRdXLp25swZtW/f3mHXYDS1+b3nu1L/avMZ812pX1X1JCYmRvfff78GDBhQ7X1weWrTE74n9a+yvhQXF8tsNuv8+fOSpIMHD8rX17fRf1dM1sZ2rwq1smLFCn3++ecymUx66qmn9PXXX6tly5YaNmyY9u/frxUrVkiS7rjjDj300EPl7tOtWzdHXoIh1bQv+fn5evzxx5WXl6eioiLNmjXLtm4adaOynoSHh+vUqVM6evSo/n+7dogDIRBEUbAn4S4YDAKHQQMWzsNhsHNG3LrdBAGit0rjOn+Sl9B1XWzbFuu62soL7t5lmiZbedi3m4zjGMMwRN/3n2+XZYl9323lYXdvMs+znbzg1/tVa43zPKNpmmjbNo7jiFLKX29F3AAAACn4LQ0AAEhB3AAAACmIGwAAIAVxAwAApCBuAACAFMQNAACQgrgBAABSEDcAAEAKF/I/n8PoFCgHAAAAAElFTkSuQmCC\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"RuFHrtIxGEkq"},"source":["xg_preds = np.expm1(xgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = xg_preds\n","sol_fl.to_csv(\"freq_xg.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"raQupIopIgka"},"source":[""],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"ilEQU-6AG4dI"},"source":["df['ADDRESS'] = dt['values']"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"eP8_-NFVGh4O","executionInfo":{"status":"ok","timestamp":1603350365269,"user_tz":-330,"elapsed":2079,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"a16c5d32-7098-4de0-e1cb-5b0e50a3aa6f","colab":{"base_uri":"https://localhost:8080/","height":221}},"source":["df['add_group_posted'] = df.groupby('ADDRESS')['POSTED_BY'].transform('nunique')\n","df['add_group_posted']"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0        3\n","1        3\n","2        3\n","3        3\n","4        3\n","        ..\n","98166    3\n","98167    3\n","98168    3\n","98169    3\n","98170    3\n","Name: add_group_posted, Length: 98171, dtype: int64"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"code","metadata":{"id":"_QtbfyV8Ghi7","executionInfo":{"status":"ok","timestamp":1603350367314,"user_tz":-330,"elapsed":1081,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"56be4b23-79e8-497f-f56c-b21881700a8a","colab":{"base_uri":"https://localhost:8080/","height":221}},"source":["df['add_group_BHK_NO'] = df.groupby('ADDRESS')['BHK_NO.'].transform('nunique')\n","df['add_group_BHK_NO']"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0         9\n","1         8\n","2        12\n","3         8\n","4        12\n","         ..\n","98166    10\n","98167     9\n","98168    13\n","98169     8\n","98170     7\n","Name: add_group_BHK_NO, Length: 98171, dtype: int64"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"code","metadata":{"id":"kfWChRKAIQF-"},"source":["train_proc, test_proc, features = split_df_and_get_features(df, train.shape[0])\n","features = [c for c in df.columns if c not in [ TARGET_COL]]\n","cat_num_cols = [c for c in features if c not in ['ADDRESS']]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"_4BeIG9IIW34","executionInfo":{"status":"ok","timestamp":1603350374039,"user_tz":-330,"elapsed":1530,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"4915da2e-f8eb-46e0-f462-99a309bbcafb","colab":{"base_uri":"https://localhost:8080/","height":238}},"source":["cat_num_cols"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['POSTED_BY',\n"," 'UNDER_CONSTRUCTION',\n"," 'RERA',\n"," 'BHK_NO.',\n"," 'BHK_OR_RK',\n"," 'SQUARE_FT',\n"," 'READY_TO_MOVE',\n"," 'RESALE',\n"," 'LONGITUDE',\n"," 'LATITUDE',\n"," 'address_counts',\n"," 'add_group_posted',\n"," 'add_group_BHK_NO']"]},"metadata":{"tags":[]},"execution_count":50}]},{"cell_type":"code","metadata":{"id":"ZuMeTXibIZpk","executionInfo":{"status":"ok","timestamp":1603285668790,"user_tz":-330,"elapsed":91772,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"0204f77b-1787-478d-a574-3bf4a4d5cc98","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = XGBRegressor(n_estimators = 1000,\n","                    max_depth = 6,\n","                    learning_rate = 0.33,\n","                    colsample_bytree = 0.5,\n","                    random_state=1452)\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","xgb_oofs, xgb_preds, fi = run_gradient_boosting(clf, fit_params, train_proc, test_proc, cat_num_cols)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","[13:06:17] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.6061\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.311488\n","[400]\tvalidation_0-rmse:0.30801\n","[600]\tvalidation_0-rmse:0.305732\n","[800]\tvalidation_0-rmse:0.307244\n","Stopping. Best iteration:\n","[628]\tvalidation_0-rmse:0.305297\n","\n","\n","AV metric score for validation set is 0.30529758932824574\n","\n","------------- Fold 2 -------------\n","[13:06:35] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.62351\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.325262\n","[400]\tvalidation_0-rmse:0.31843\n","[600]\tvalidation_0-rmse:0.317448\n","[800]\tvalidation_0-rmse:0.316848\n","Stopping. Best iteration:\n","[666]\tvalidation_0-rmse:0.316259\n","\n","\n","AV metric score for validation set is 0.316258327463878\n","\n","------------- Fold 3 -------------\n","[13:06:55] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.6123\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.327931\n","[400]\tvalidation_0-rmse:0.323183\n","[600]\tvalidation_0-rmse:0.321717\n","[800]\tvalidation_0-rmse:0.322142\n","Stopping. Best iteration:\n","[612]\tvalidation_0-rmse:0.321452\n","\n","\n","AV metric score for validation set is 0.32145188704976174\n","\n","------------- Fold 4 -------------\n","[13:07:13] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.59766\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.320985\n","[400]\tvalidation_0-rmse:0.313509\n","[600]\tvalidation_0-rmse:0.311917\n","[800]\tvalidation_0-rmse:0.311881\n","Stopping. Best iteration:\n","[712]\tvalidation_0-rmse:0.31136\n","\n","\n","AV metric score for validation set is 0.31135998885069605\n","\n","------------- Fold 5 -------------\n","[13:07:33] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.60878\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.347145\n","[400]\tvalidation_0-rmse:0.341717\n","[600]\tvalidation_0-rmse:0.341797\n","Stopping. Best iteration:\n","[433]\tvalidation_0-rmse:0.341153\n","\n","\n","AV metric score for validation set is 0.3411527513933539\n","\n","\n","AV metric for oofs is 0.3193386969361469\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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4Q8aMWKE2rdvr6lTp+rJJ59UaWmpnJyctHz5cnXp0kXLly9XRkaGysvLNXPmTE2dOrXatuqUlpbKaDTq+PHjat68uVatWqV27dpp2bJl+v7771VSUqLg4GANHz5co0ePVnJyslxdXS0zVZKUnp6u/Px8ZWdn66GHHlKXLl20Z88effvtt4qOjlZcXFydYgEAAACaossWPr/88kulz25ubvr73//eYAE1RSdPntT06dM1duxY7d+/XzExMTp48KDeeecdtWnTxlIEJCUlydvbW0uWLFFqaqpSUs6/4aysrEwjRozQiBEjtGTJEj344IO67bbbtG/fPm3cuFGPP/64PvzwQ+3Zs0elpaV69913dfr06SptNXnvvfd0/fXX67nnnlNKSor27t2rli1bysXFRa+88ory8vIUGBioXbt21TjGN998o9dff105OTkKCQlRUlKSfHx8FB4erpYtW9Y5FltiMpmsHUKTUVRUxPOwUeTOdpE720XubBe5s131kbvLFj6Ojo6aN29epbbIyEgZjcZrurAtuf7667Vx40bFxsaqpKRExcXFcnV1tSwBGzhwoCQpMzNTt956qyRp8ODBlcbw9fWVJH311VfKzs7Wpk2bVF5ernbt2snNzU0eHh7685//rPHjx2vKlClycXGp0laTQ4cOaejQoZKkSZPOv6J5+fLlGjJkiCSpU6dOcnFx0enTp2scY8CAAXJyclLnzp2r7OGqLj574OPjY+0QmgyTycTzsFHkznaRO9tF7mwXubNdF+cuPT39qsaosfDZvXu3tm/fri+++EJHjhyxtJeVlem///3vb6rw2bJlizp16qTVq1fr4MGDMhqNcnT8v9/9ajabLX9eaK+oqKg0xoXfgeTs7Kx169apY8eOlY5v3rxZhw4d0vbt25WUlKS4uLhq26rj5ORU5XoXxyVJJSUllWKWzi+Ru6BZs9pr4LrGAgAAADRFjjUd+MMf/qC//OUv6t+/vwICAiz/zJkzR4mJiY0Zo9X98ssv6t69uyRpz549at26tc6cOaOCggKVlpbqyy+/lCR5enoqIyNDkpSWllbtWDfffLP27NkjSdq/f7+Sk5OVm5urrVu3qm/fvgoLC9Pp06erbatJ//799e9//1uS9MEHH+ill15S//79LTH8+OOPcnR0VJs2bdSqVSudPHlS5eXl+vrrr2u9bwcHB5WX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\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"8Qbuk6NpIhqH"},"source":["xg_preds = np.expm1(xgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = xg_preds\n","sol_fl.to_csv(\"freq_xg_.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Tnvc8mykIn9H"},"source":["### Grouping Features"]},{"cell_type":"code","metadata":{"id":"x2CQyVbxIq9Y"},"source":["df['address_mean_logitude'] = df.groupby('ADDRESS')['LONGITUDE'].transform('mean')\n","df['address_max_logitude'] = df.groupby('ADDRESS')['LONGITUDE'].transform('max')\n","df['address_min_logitude'] = df.groupby('ADDRESS')['LONGITUDE'].transform('min')\n","\n","df['address_mean_lotitude'] = df.groupby('ADDRESS')['LATITUDE'].transform('mean')\n","df['address_max_lotitude'] = df.groupby('ADDRESS')['LATITUDE'].transform('max')\n","df['address_min_lotitude'] = df.groupby('ADDRESS')['LATITUDE'].transform('min')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"RsV2OQAs_UnA"},"source":["df['SQUARE_FT/BHK_NO.'] = df['SQUARE_FT']//df['BHK_NO.']"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"q12150W2CJ9J","executionInfo":{"status":"ok","timestamp":1603350389818,"user_tz":-330,"elapsed":1669,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"c0a48dc9-7d29-4070-fd4f-30e92f5c00ff","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["df.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(98171, 22)"]},"metadata":{"tags":[]},"execution_count":53}]},{"cell_type":"code","metadata":{"id":"4mvf5f9UBBTv"},"source":["new_add = pd.concat([train['ADDRESS'], test['ADDRESS']], axis=0)\n","adr = new_add.str.split(',', n = 1, expand = True)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"ZNns-udvTMNW"},"source":["new_add = pd.concat([train['ADDRESS'], test['ADDRESS']], axis=0)\n","adr = new_add.str.split(',', n = 1, expand = True)\n","df['adr_1'] = list(adr[0])\n","df['adr_2'] = list(adr[1])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"bmDNYxKpSB3S"},"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","df['adr_1'] = le.fit_transform(df['adr_1'])\n","df['adr_2'] = le.fit_transform(df['adr_2'])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"rMA8pxQdxZSp"},"source":["df['addr_mean_POSTED_BY'] = df.groupby('adr_2')['POSTED_BY'].transform('mean')\n","df['addr_max_POSTED_BY'] = df.groupby('adr_2')['POSTED_BY'].transform('max')\n","df['addr_min_POSTED_BY'] = df.groupby('adr_2')['POSTED_BY'].transform('min')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"YdGS4dkj6MdA"},"source":["df['addr1_mean_POSTED_BY'] = df.groupby('adr_1')['POSTED_BY'].transform('mean')\n","df['addr1_max_POSTED_BY'] = df.groupby('adr_1')['POSTED_BY'].transform('max')\n","df['addr1_min_POSTED_BY'] = df.groupby('adr_1')['POSTED_BY'].transform('min')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"hud0sbWzJgjK","executionInfo":{"status":"ok","timestamp":1603350707586,"user_tz":-330,"elapsed":1579,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"286b3a1d-69eb-4255-bdcc-74a3ceedbf5a","colab":{"base_uri":"https://localhost:8080/","height":187}},"source":["df.columns"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Index(['POSTED_BY', 'UNDER_CONSTRUCTION', 'RERA', 'BHK_NO.', 'BHK_OR_RK',\n","       'SQUARE_FT', 'READY_TO_MOVE', 'RESALE', 'ADDRESS', 'LONGITUDE',\n","       'LATITUDE', 'TARGET(PRICE_IN_LACS)', 'address_counts',\n","       'add_group_posted', 'add_group_BHK_NO', 'address_mean_logitude',\n","       'address_max_logitude', 'address_min_logitude', 'address_mean_lotitude',\n","       'address_max_lotitude', 'address_min_lotitude', 'SQUARE_FT/BHK_NO.',\n","       'adr_1', 'adr_2', 'addr_mean_POSTED_BY', 'addr_max_POSTED_BY',\n","       'addr_min_POSTED_BY', 'addr1_mean_POSTED_BY', 'addr1_max_POSTED_BY',\n","       'addr1_min_POSTED_BY'],\n","      dtype='object')"]},"metadata":{"tags":[]},"execution_count":62}]},{"cell_type":"code","metadata":{"id":"NJcuqSphIZWL"},"source":["df['addr1_mean_RERA'] = df.groupby('adr_2')['RERA'].transform('mean')\n","df['addr1_max_RERA'] = df.groupby('adr_2')['RERA'].transform('max')\n","df['addr1_min_RERA'] = df.groupby('adr_2')['RERA'].transform('min')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"WR_rfBlTPbqW"},"source":["df['SQUARE_FT_UR'] = df.groupby('SQUARE_FT')['UNDER_CONSTRUCTION'].transform('mean')\n","df['SQUARE_FT_UR'] = df.groupby('SQUARE_FT')['UNDER_CONSTRUCTION'].transform('max')\n","df['SQUARE_FT_UR'] = df.groupby('SQUARE_FT')['UNDER_CONSTRUCTION'].transform('min')\n","df['SQUARE_FT_UR'] = df.groupby('SQUARE_FT')['UNDER_CONSTRUCTION'].transform('sum')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"BY60lkomUadn"},"source":["df['addr_mean_resale'] = df.groupby('adr_2')['RESALE'].transform('mean')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Si58cHoJKL6J"},"source":["train_proc, test_proc, features = split_df_and_get_features(df, train.shape[0])\n","features = [c for c in df.columns if c not in [ TARGET_COL]]\n","cat_num_cols = features"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"A3StQQWyKUv9","executionInfo":{"status":"ok","timestamp":1603354436348,"user_tz":-330,"elapsed":1568,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"1f1f83b7-b48c-4925-9eff-bc73376bab08","colab":{"base_uri":"https://localhost:8080/","height":131}},"source":["df.head(2)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>POSTED_BY</th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>BHK_OR_RK</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","      <th>address_counts</th>\n","      <th>add_group_posted</th>\n","      <th>add_group_BHK_NO</th>\n","      <th>address_mean_logitude</th>\n","      <th>address_max_logitude</th>\n","      <th>address_min_logitude</th>\n","      <th>address_mean_lotitude</th>\n","      <th>address_max_lotitude</th>\n","      <th>address_min_lotitude</th>\n","      <th>SQUARE_FT/BHK_NO.</th>\n","      <th>adr_1</th>\n","      <th>adr_2</th>\n","      <th>addr_mean_POSTED_BY</th>\n","      <th>addr_max_POSTED_BY</th>\n","      <th>addr_min_POSTED_BY</th>\n","      <th>addr1_mean_POSTED_BY</th>\n","      <th>addr1_max_POSTED_BY</th>\n","      <th>addr1_min_POSTED_BY</th>\n","      <th>addr1_mean_RERA</th>\n","      <th>addr1_max_RERA</th>\n","      <th>addr1_min_RERA</th>\n","      <th>SQUARE_FT_UR</th>\n","      <th>addr_mean_resale</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","      <td>1.098612</td>\n","      <td>0</td>\n","      <td>7.171070</td>\n","      <td>0.693147</td>\n","      <td>0.693147</td>\n","      <td>21</td>\n","      <td>2.636906</td>\n","      <td>4.364346</td>\n","      <td>4.025352</td>\n","      <td>9673</td>\n","      <td>3</td>\n","      <td>9</td>\n","      <td>3.087150</td>\n","      <td>4.089194</td>\n","      <td>2.291047</td>\n","      <td>4.358389</td>\n","      <td>5.034671</td>\n","      <td>-0.030128</td>\n","      <td>6.0</td>\n","      <td>4505</td>\n","      <td>554</td>\n","      <td>0.565379</td>\n","      <td>2</td>\n","      <td>0</td>\n","      <td>0.000000</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>0.184379</td>\n","      <td>0.693147</td>\n","      <td>0.0</td>\n","      <td>0.000000</td>\n","      <td>0.666419</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>1</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","      <td>1.098612</td>\n","      <td>0</td>\n","      <td>7.151485</td>\n","      <td>0.693147</td>\n","      <td>0.693147</td>\n","      <td>25</td>\n","      <td>2.585848</td>\n","      <td>4.352142</td>\n","      <td>3.951244</td>\n","      <td>4186</td>\n","      <td>3</td>\n","      <td>8</td>\n","      <td>3.083933</td>\n","      <td>3.947726</td>\n","      <td>2.251490</td>\n","      <td>4.345663</td>\n","      <td>5.034671</td>\n","      <td>1.690363</td>\n","      <td>6.0</td>\n","      <td>10293</td>\n","      <td>761</td>\n","      <td>0.513661</td>\n","      <td>2</td>\n","      <td>0</td>\n","      <td>0.722222</td>\n","      <td>1</td>\n","      <td>0</td>\n","      <td>0.087117</td>\n","      <td>0.693147</td>\n","      <td>0.0</td>\n","      <td>2.772589</td>\n","      <td>0.662846</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   POSTED_BY  UNDER_CONSTRUCTION  ...  SQUARE_FT_UR  addr_mean_resale\n","0          0                 0.0  ...      0.000000          0.666419\n","1          1                 0.0  ...      2.772589          0.662846\n","\n","[2 rows x 35 columns]"]},"metadata":{"tags":[]},"execution_count":122}]},{"cell_type":"code","metadata":{"id":"AvcDKgSmVzNm","executionInfo":{"status":"ok","timestamp":1603354288541,"user_tz":-330,"elapsed":4671,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"51982309-3559-4b07-ceb6-79a44e29cdaa","colab":{"base_uri":"https://localhost:8080/","height":280}},"source":[""],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["<matplotlib.axes._subplots.AxesSubplot at 0x7fc42d208e80>"]},"metadata":{"tags":[]},"execution_count":119},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"Fs75KmT5KZZU","executionInfo":{"status":"ok","timestamp":1603354635970,"user_tz":-330,"elapsed":181809,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"793d4d31-2fba-4d02-d0ff-fb957b3e49d3","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = XGBRegressor(n_estimators = 2000,\n","                    max_depth = 5,\n","                    learning_rate = 0.33,\n","                    colsample_bytree = 0.7,\n","                    random_state=1)\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","xgb_oofs, xgb_preds, fi = run_gradient_boosting(clf, fit_params, train_proc, test_proc, cat_num_cols)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","[08:14:14] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.5935\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.280353\n","[400]\tvalidation_0-rmse:0.274893\n","[600]\tvalidation_0-rmse:0.274147\n","[800]\tvalidation_0-rmse:0.274117\n","Stopping. Best iteration:\n","[630]\tvalidation_0-rmse:0.273501\n","\n","\n","AV metric score for validation set is 0.2735013435307205\n","\n","------------- Fold 2 -------------\n","[08:14:45] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.6038\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.291745\n","[400]\tvalidation_0-rmse:0.289165\n","[600]\tvalidation_0-rmse:0.288908\n","Stopping. Best iteration:\n","[429]\tvalidation_0-rmse:0.288641\n","\n","\n","AV metric score for validation set is 0.2886413177447897\n","\n","------------- Fold 3 -------------\n","[08:15:07] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.59699\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.295535\n","[400]\tvalidation_0-rmse:0.292379\n","[600]\tvalidation_0-rmse:0.290413\n","[800]\tvalidation_0-rmse:0.28984\n","[1000]\tvalidation_0-rmse:0.289992\n","[1200]\tvalidation_0-rmse:0.289418\n","[1400]\tvalidation_0-rmse:0.290279\n","Stopping. Best iteration:\n","[1208]\tvalidation_0-rmse:0.28935\n","\n","\n","AV metric score for validation set is 0.28934975879418995\n","\n","------------- Fold 4 -------------\n","[08:16:00] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.58572\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.298848\n","[400]\tvalidation_0-rmse:0.293537\n","[600]\tvalidation_0-rmse:0.292131\n","[800]\tvalidation_0-rmse:0.291319\n","Stopping. Best iteration:\n","[788]\tvalidation_0-rmse:0.290939\n","\n","\n","AV metric score for validation set is 0.29093848548117784\n","\n","------------- Fold 5 -------------\n","[08:16:36] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.59677\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.317016\n","[400]\tvalidation_0-rmse:0.311441\n","[600]\tvalidation_0-rmse:0.309575\n","[800]\tvalidation_0-rmse:0.309375\n","[1000]\tvalidation_0-rmse:0.309117\n","Stopping. Best iteration:\n","[842]\tvalidation_0-rmse:0.308947\n","\n","\n","AV metric score for validation set is 0.30894710253931373\n","\n","\n","AV metric for oofs is 0.2904933615675655\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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F7y8vCguLuazzz6jpKTE0s6dd94JwHfffQdAbGwsJ0+evOW4RERERETqym03cjN69GgiIyNJTU0lJCSEpKQkwsPDmThxIh06dMDHxweAMWPGEB4ezqRJkypsKGALv//974mOjiYmJoYWLVrw5ptv4uDgQExMDBMnTiQoKIgBAwawePHiW+7jkUce4b//+78ZN24cZrOZ5557DoB77rmHKVOm4O7ujru7O1OmTCE3N5fw8HA6duxIaGgoS5YsYcSIEZa2XnvtNebPn28ZxRk3bpy1KRARERERsTk7c03znERqIS0tzeZF4O1Iw97WUydoZqQAACAASURBVA5tQ3m0nnJoG8qj9ZRD6ymHtmHLaWlVfe+87UZubOXgwYNs27at0vGwsDCGDBlSp32//PLLXL58ucIxNzc3Nm3aVKf9ioiIiIg0ZipubtHgwYMZPHhwg/S9YcOGBulXRERERKQxu+02FBARERERkeZJxY2IiIiIiDQLKm5ERERERKRZUHEjIiIiIiLNgoobERERERFpFhrlbmnx8fEkJibi5OSE0WgkIiKCRx99lOTkZLZs2YLBYKCsrIzf/va3BAUFATBo0CD279+Pq6srAOfOnWPmzJkkJCRY2p06dSotWrRg48aNlmODBg3C09MTBwcHTCYTzs7OvP7663h4eBAVFcWJEydo1apVheunTJlyw7iPHDnCrFmzLC8CBejXrx+XLl3ixIkTXLhwgatXr+Ll5cWdd97Jhg0bKC4uZtq0aYSHh1e4t6ysjKVLl+Lt7c369eu56667mDhxYoU49u/fT0ZGBvHx8axbtw6AHTt2kJaWxttvv42dnd0N4yx/htDQUEuuNmzYwBtvvAHAtm3bLPkHmDt3Lr17967x361TVHKN10htZDd0AM2Acmgb1/KY88aTDRyHiIhI7TS64ubcuXPs3r2bPXv2YDAYyMnJYeHChbi6urJ161a2bt1Kq1atyM/PZ/r06bi5udGnT58a27148SJZWVkYjUby8vJo2bKl5VxMTIylKEpISGDt2rW8/vrrAERERDBw4MBaxx8QEGApNH4tISGBU6dOERkZaTl2/Phx/P39K927b98+tm/fzpIlS2rd96FDh0hJSWHbtm1VFjYAbdq0Yffu3Tz99NO4ublVOJecnMyhQ4fYtWsXzs7OnD9/nqlTp7Ju3Truu+++WsciIiIi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dnZ2tdZ+8bG0yspKXnrpJbZs2YKfnx8ATz31FHfddRcbNmyodQxpWfr06dPUJZglMzPzqq29OVGOllOG1qEcLacMLacMrcNaOaampta4rsmam7i4OFxdXVm8eDHp6emEhISY/tgHTA3BpU1AZWVllTHs7e3NOvalj1Vd+n11TcilTUF16y916bsulyorK+PcuXNVXur/6quvuOWWW4ALXWzXrl2ZMmUKU6ZMISAggCNHjlzWzF2qtndufisjI4OHH364Xtva2tri7e3Nzp07Tc2Nk5MT7du3N93NERERERFpjprsc25yc3Pp1q0bALt378bJyYn8/Hzy8vIoKysz3UXp0aMHGRkZwIUX6a9GU6dOJTIykoqKCuDC3aikpCQefPBB/v3vf/PYY49RVlYGQElJCXl5ebi5uVnl2Js3b6Z9+/b07t273vt88cUX9OjRwyrHFxERERFpLE1252bChAkEBweTnJzMtGnTSExMJCgoCH9/f9zd3U3THPv4+BAUFMT06dOrTChwqS1btvDBBx+QmZlJaGgoPXv25NVXX23M06nVzJkzeeedd/Dx8cHBwQEHBweioqJwcnJi+PDhHD16lClTpnDddddRVlbG9OnT6dq1a61j/vaxNLgwfTb87/G4/Px8brrpJl555ZU6a7z4zk1FRQWdOnUiMjLyis9Tn4tiOd32FhERETGfjbGuZ61E6iE1NbXG5lPqT82N5ZShdShHyylD61COllOGllOG1mHNd25q+ruzxc7pGxERQVZW1mXLY2NjzZ6J7IcffiA4OPiy5bW9zN9cHDlyhMWLF1+2fNy4cUydOrUJKhIRERERsa4W3dxYm5ubG+vWrbP6uI3B09Pzqq1dRERERKQ+mmxCAREREREREWtScyMiIiIiIi2CmhsREREREWkR1NyIiIiIiEiL0GInFLhanDp1itmzZxMfH3/ZukceeYQ2bdoQExPDsWPHWLhwIQD/+c9/6N+/P3Z2dvzxj3/kyy+/pEOHDvTo0YO33noLgLS0NAYNGgTA888/z+LFiwkPD+d3v/udafxhw4Zx4MAB4uPjWbp0Kd26daOyspIOHToQHByMh4cHp06dYvz48fTr169KbcuXL6d9+/ZVlnUPSbJqNteurxt0dH0ekYiIiLRUam6aqbNnz5KVlUVxcTH5+fn06tXLNNvZqFGjiI2NxdHREYAvv/wSgDvuuIM77rgDuNC4XMnsaPfdd59pmut//vOfzJw5kw8++ACAHj16aKY1EREREWn29FhaM7Vz507uvvtu7rjjDj766KNGPfaIESMYMmQI//jHPxr1uCIiIiIillBz00wlJiZy//3388ADD7Bz585GP36/fv04ceJEox9XRERERMRceiytGTp58iQ//fQTgwcPpry8nBdeeIFz587RsWNHqx7HxsamxnWFhYXY2dkBkJ2dTUBAgGldjx49mD9/vlVrkcaTmZnZ1CU0qOLi4hZ/jo1BOVpOGVqHcrScMrScMrSOxshRzU0zlJiYSElJCT4+PgCUl5eza9cupk2bZvaYHTp0IC8vz/TzuXPn6NSpU43bZ2RkcP/9F1481zs3LUufPn2auoQGlZmZ2eLPsTEoR8spQ+tQjpZThpZThtZhrRxTU1NrXKfH0pqhpKQk1qxZQ0JCAgkJCURHR5OUZNlMZLfffrtpggCALVu24OXlVe22n3zyCV9//TWjRo2y6JgiIiIiIo1Jd26agUsf+/rqq69Ms6NddNttt3H27Fl+/PFHbrzxRrOOMWnSJF577TUmT56MnZ0dPXv2JDQ01LR+586dZGRkUFhYSMeOHVm+fDm2traX1XfR888/j6enp1m1iIiIiIg0BBuj0Whs6iLk6peamsrgwYObuoyrnm57W04ZWodytJwytA7laDllaDllaB3WfCytpr879ViaiIiIiIi0CGpuRERERESkRVBzIyIiIiIiLYKaGxERERERaRHU3IiIiIiISIug5kZERERERFoENTciIiIiItIi6EM8xWq6hyQ1dQktxNdXtPU3r9zfQHWIiIiIXF3U3PxGVFQUBoMBX19f07LCwkLGjx/Pxx9/fNn2u3btIiwsjM2bN/O73/2uMUu9TEBAAEVFRVx//fUYjUZsbGx46aWXuOWWW1i+fDk7duzA1dXVtH3//v35y1/+Uut+Fz3yyCO0adOGmJiYpjg1EREREZE6qbmxwMGDB9m/fz+9evVq6lJMIiMjTU3WgQMHWLBgAXFxcQAEBgbi7+9/xfudPXuWrKwsiouLyc/Px8nJqRHORERERETkylxzzU1BQQFz586lqKiI4uJiwsPDyc7OZuXKlbi6uuLg4IDBYKCgoICnn36akpISBg8ebNp/7NixeHl54ezsTEBAAEOHDiUgIKDO48bHx3Po0CFyc3M5fvw4c+bMITExkaysLJYsWcKAAQOIjIzkyJEjlJSUMGXKFPz8/PjTn/7EnDlz8PT0ZMaMGcyaNYtBgwbV61wHDBjAt99+e8UZ/Xa/nTt3cvfdd5OXl8dHH33ExIkTr3hMEREREZGGds01Nzk5Ofj5+eHt7U1KSgqxsbGkp6ezbds22rVrZ3ocLSEhAYPBQFhYGDt37iQp6cL7JOXl5Xh5eeHl5XXFx/7mm2/YsGEDW7Zs4e2332b79u3Ex8eTmJhI7969cXd3JzQ0lOLiYry9vfHz8yM8PJz58+cTGBiIu7t7vRsbgOTkZH7/+99fcZ2/3S8xMZHnn3+e/Px8/v73v6u5aWYyMzObuoRmpbi4WJlYgXK0nDK0DuVoOWVoOWVoHY2R4zXX3Li4uBATE8OqVasoLS2lpKQER0dHnJ2dAUzNQ1ZWFkOGDAFg6NChVcbw9PQ069j9+vXDxsaGTp060atXL+zs7HBxcSEtLY02bdrwyy+/MHnyZOzt7cnNzQXg5ptv5tZbbyUyMpKtW7fWeYzQ0FCuv/56zpw5Q9euXYmMjDStW7t2LR9++KHp58DAQMaMGVPrfidPnuSnn35i8ODBlJeX88ILL3Du3Dk6duxoVgZifX369GnqEpqVzMxMZWIFytFyytA6lKPllKHllKF1WCvH1NTUGtddc81NXFwcrq6uLF68mPT0dEJCQrC1/d+M2Eaj0fT14vLKysoqY9jb25t17FatWlX7vdFo5ODBg3z22WesW7cOe3t7Bg4caFr/888/Y29vT15eHjfccEOtx7j47szevXt577336Ny5s2ldfd65+e1+iYmJlJSU4OPjA1y4c7Vr1y6mTZt25QGIiIiIiDSga+5zbnJzc+nWrRsAu3fvxsnJifz8fPLy8igrKyMtLQ2AHj16kJGRAVx4wb4x6urSpQv29vbs2bOHiooKSktLSUtLIz8/n8jISBYsWFDv8e6++25KS0vZt2/fFdXx2/2SkpJYs2YNCQkJJCQkEB0dbXpET0RERESkObnm7txMmDCB4OBgkpOTmTZtGomJiQQFBeHv74+7uzsGgwEAHx8fgoKCmD59epUJBS61ZcsWPvjgAzIzMwkNDaVnz568+uqrZtU1fPhwYmNj8ff3x9vbm5EjRxIREcHx48d5/fXX8fDwoH379uzatYtx48bVa8zQ0FCCgoK4/fbbgcsfS7vhhhuIjo6ucb8uXbrQunXrKrPB3XbbbZw9e5Yff/yRG2+8scp++rwVy+m2t4iIiIj5bIwXn8MSsUBqamqNTaDUn5obyylD61COllOG1qEcLacMLacMrcOa79zU9HfnNXfnpqFFRESQlZV12fLY2FgcHBwsHn/Pnj2sWbPmsuWXTg4gIiIiInItUnNjZREREQ06/ujRoxk9enSDHkNERERE5Gp0zU0oICIiIiIiLZOaGxERERERaRHU3IiIiIiISIug5kZERERERFoENTciIiIiItIiaLY0sZruIUlNXUKzpQ84FREREWl4V11zExUVhcFgwNfX17SssLCQ8ePH8/HHH1vlGIsWLSIwMBAPD49673Pq1CnGjx9Pv379MBqNlJaW8uijj5o+e+Zf//oXy5cvx2g0UlJSwsMPP8zUqVMBOH36NOHh4fz6668UFxdjMBj461//ytq1a/nkk0/Iy8vjp59+wmAwALBq1SruvfdeunTpgp2dnamGp556Cg8Pjyp12NnZ8cQTT3D77bfXWPuBAwd45plnTONXVFSwYMECbrrpJh588EH+9re/0bNnTwC++OILFi1axObNm7GxsbmyYEVEREREGtBV19w0hnnz5pm1X48ePVi3bh0A58+f58EHH+TOO+/k7NmzLFiwgFWrVuHu7k5paSlz587F3t4ePz8/li5diq+vL+PGjQPgxRdf5NNPP2XmzJnMnDmTAwcOsH79epYtW1bleLGxsTg6OlZZdurUqSp1fPfddzzxxBO8/vrr9O7du8bahw4dahp/+/btxMXFMX/+fJ599lkWL17MW2+9BcCrr75KSEiIGhsRERERaXaaXXNTUFDA3LlzKSoqori4mPDwcLKzs1m5ciWurq44ODhgMBgoKCjg6aefpqSkhMGDB5v2Hzt2LF5eXjg7O/Pkk09Wewxvb29GjRpFSkoKd955J0ajkX/96194eXnx3HPPERAQQHh4OB9++CH5+flkZ2fz3XffERYWxl133VWv82jfvj2dOnUiJyeHzZs3ExAQgLu7OwCtW7cmNDSUxx9/HD8/P/Ly8igoKDDtO3/+fAsSrKpbt2488cQTbNiwod7j/vzzz3Tu3BmAu+++m7i4OA4ePEheXh6dO3dm0KBBVqtPRERERMRaml1zk5OTg5+fH97e3qSkpBAbG0t6ejrbtm2jXbt2psfREhISMBgMhIWFsXPnTpKSLrzvUV5ejpeXF15eXjUe49SpU0yaNIk5c+YwdOhQ/v73v/PMM89w991389xzz1XZ9vTp08TGxrJ//342bdpU7+bm1KlTnD9/nhtvvJGvv/6a0aNHV1nv5uZGbm4ulZWVPProozz11FPEx8dzxx13MH78eG666aYria1W/fr1Y9OmTbVuc/DgQQICAigsLKSoqMh05wcgJCSEF198kdLSUt58802r1XUtyczMrNd2xcXF9d5WqqcMrUM5Wk4ZWodytJwytJwytI7GyLHZNTcuLi7ExMSwatUqSktLKSkpwdHREWdnZwDTXYOsrCyGDBkCXHik6lKenp61HqNt27amd0iuv/56+vbtS6tWraisrLxs24vH69KlC/n5+bWOm52dTUBAAEajkTZt2hAVFUWrVq2wsbGhoqKi2n1sbGy49dZb2bNnD//617/Yv38/Dz30EG+88QYjRoyo9XiPPvpolXduYmNjq92usLCwynbVufSxtEOHDvHnP/+Z9evXA9C7d2+6d+9Ohw4dTHef5Mr06dOnXttlZmbWe1upnjK0DuVoOWVoHcrRcsrQcsrQOqyVY2pqao3rml1zExcXh6urK4sXLyY9PZ2QkBBsbf83Y7XRaDR9vbj8t02Jvb19rcf47R/6rVrVHENt637r0nddLnXzzTeTkZHBbbfdZlr2/fff06lTJ2xsbCguLua6667D29sbb29vBg4cSFJSUp3NTXXv3FQnIyPjin6RhgwZwjfffENFRYUpKw8PDzp06FDvMUREREREGluz+5yb3NxcunXrBsDu3btxcnIiPz+fvLw8ysrKSEtLAy40EhkZGcCF2b6asylTprB+/Xq+++47AMrKynjllVeYPn06lZWVjB8/nhMnTpi2P336NF27drXKsb/77jvWrFnDH//4xyvax8nJqc67PSIiIiIizUmzu3MzYcIEgoODSU5OZtq0aSQmJhIUFIS/vz/u7u6m6Yp9fHwICgpi+vTpVSYUaI7c3NxYsmQJzz//vGma6D/84Q/4+PgA8NprrxEREWHavmvXrrz44ot1jvvbx9IeeOAB7rjjDtPjcaWlpVRUVPDiiy/i5uZW61gX37mBC83XokWLrvg89VkuIiIiItKUbIwXn/MSsUBqamqzbzKvBnqm13LK0DqUo+WUoXUoR8spQ8spQ+uw5js3Nf3d2ezu3FjLnj17WLNmzWXLAwMDTR+saY6IiAiysrIuWx4bG4uDg4PZ4zaGWbNm8csvv1RZ1rZtW1asWNFEFYmIiIiIWE+LbW5Gjx592fTL1nDp42NXm+jo6KYuQURERESkwTS7CQVERERERETMoeZGRERERERaBDU3IiIiIiLSIqi5ERERERGRFqHFTiggja97SFJTl9Bo9Jk+IiIiIs2P7txco6KiooiPj6/XtuXl5QQHBzNlyhQefvhhPv/88wauTkRERETkyunOjdQpISGB6667jo0bN3L8+HFCQ0PZunVrU5clIiIiIlKFmpsWqqCggLlz51JUVERxcTHh4eFkZ2ezcuVKXF1dcXBwwGAwEB8fz/79+zlz5gxvvPEGrq6ul431hz/8gQceeACAjh07cv78+cY+HRERERGROqm5aaFycnLw8/PD29ublJQUYmNjSU9PZ9u2bbRr1w5fX1/Ttj/++CObNm3Cxsam2rHs7e1N38fFxZkanWtZZmZmg4xbXFzcYGNfK5ShdShHyylD61COllOGllOG1tEYOaq5aaFcXFyIiYlh1apVlJaWUlJSgqOjI87OzgAMGjTItG3//v1rbGwutX79eo4ePcpbb73VYHVfLfr06dMg42ZmZjbY2NcKZWgdytFyytA6lKPllKHllKF1WCvH1NTUGtdpQoEWKi4uDldXVzZu3EhERARGoxFb2//9cxuNRtP3l96ZqcmWLVv4+OOPiYmJqdf2IiIiIiKNTc1NC5Wbm0u3bt0A2L17N05OTuTn55OXl0dZWRlpaWn1HuvkyZNs2rSJ6Oho2rRp01Ali4iIiIhYRI+ltVATJkwgODiY5ORkpk2bRmJiIkFBQfj7++Pu7o7BYKj3WFu2bOH8+fM89thjpmWrVq2idevWVbbTZ7+IiIiISFNSc9NCeXp6smvXLtPPo0ePBsDPz++Kx3r22Wd59tlnrVabiIiIiEhDUHMjJrNmzeKXX36psqxt27asWLGiiSoSEREREak/NTdiEh0d3dQliIiIiIiYTRMKiIiIiIhIi6DmRkREREREWgQ1NyIiIiIi0iKouRERERERkRbhqpxQICoqCoPBgK+vr2lZYWEh48eP5+OPP27CyhreqFGj2LFjB46OjvXe55133mHIkCEMHDiQDz/8kHvuuade+82ePZtp06YxbNiwem3fPSSp3jU1Fn32joiIiMi1Q3durgGPPfYYAwcO5NSpUyQlNb8GRERERETEGprlnZuCggLmzp1LUVERxcXFhIeHk52dzcqVK3F1dcXBwQGDwUBBQQFPP/00JSUlDB482LT/2LFj8fLywtnZGV9fX+bNm0dZWRl2dnYsXLgQNzc3Fi5cSEZGBhUVFUyZMgVfX99ql1UnPj6eQ4cOkZuby/Hjx5kzZw6JiYlkZWWxZMkSBgwYwPr169mxYwe2trZ4e3szY8YMTp8+zfPPPw9AeXk5UVFRdOvWjTFjxuDt7U1aWhpOTk6888472NrW3neePn2asLAwysrKsLGxYdGiRXh4eLBw4ULS0tIwGAxkZ2fz+uuvEx0dzT333MPGjRs5cuQI0dHRGI1GOnTogL+/P//9739ZsGAB69atIzY2lqSkJNzc3CgoKDD9e4SFhfHLL79QUVHBCy+8QO/eva30ry0iIiIiYh3N8s5NTk4Ofn5+rFu3jmeffZbY2FjeeOMN1qxZw4oVK/j2228BSEhIwGAwsGHDBvr06WPav7y8HC8vL5588kmWLl3KjBkziIuLY/r06cTExHD+/Hn27dvHpk2b2LD+SRurAAAaR0lEQVRhA+Xl5dUuq80333zDihUrePzxx3n77bd58803eeyxx0hMTOTkyZMkJyezceNG1q9fz0cffcQPP/zAmTNnCAoKYt26dUycOJENGzYAcPLkSSZMmMDmzZvJy8vj2LFjdWa0dOlSHnroIdatW8fUqVOJjo7m2LFjpKamsnXrVmbMmEFGRkaVfR555BGGDh3KrFmzqh0zLy+PjRs3snnzZl599VWOHz8OQFxcHHfeeSdxcXFEREQQFRVVZ30iIiIiIo2tWd65cXFxISYmhlWrVlFaWkpJSQmOjo44OzsDMGjQIACysrIYMmQIAEOHDq0yhqenJwCHDx8mOzubFStWUFFRQceOHWnfvj3du3fnySef5N5778XHx4fWrVtftqw2/fr1w8bGhk6dOtGrVy/s7OxwcXEhLS2N9PR0vv32WwIDA4EL7wN9//33dO3alYULF7J8+XLy8vLo27cvAG3btjXdCenSpQv5+fl1ZpSRkcHcuXMBGDZsGG+++SZZWVkMGDAAW1tbevXqhbu7e73yvujbb7/llltuoU2bNrRp08ZU3+HDhzl37hwffPABAL/++usVjduUMjMzm7qEK1JcXHzV1dzcKEPrUI6WU4bWoRwtpwwtpwytozFybJbNTVxcHK6urixevJj09HRCQkKqPKZlNBpNXy8ur6ysrDKGvb296evSpUvp3LlzlfUrV67k6NGjJCYmkpCQwOrVq6tdVpNWrVpV+73RaMTe3p6RI0cyf/78KvuEhoYyYsQIpkyZQnJyMvv27QPAzs6uynYXz682NjY2pu3KyspMOVyak42NTa37X3TxLtWleV5ah729PeHh4QwcOLDOupqbS+/oXQ0yMzOvupqbG2VoHcrRcsrQOpSj5ZSh5ZShdVgrx9TU1BrXNcvH0nJzc+nWrRsAu3fvxsnJifz8fPLy8igrKyMtLQ2AHj16mB69OnDgQLVjDRgwgN27dwOQkpLCjh07OHXqFGvXrqVv374EBwdz/vz5apeZq2/fvhw4cIBff/0Vo9HIwoULKS4uNp2X0Whkz549lJWVmX2M/v37m8750KFD9OvXDw8PD44ePYrRaCQrK4sffvihyj62tramRqZt27bk5OQA//sF6datG1lZWZSWllJQUGDK9tIMT5w4wbvvvmt23SIiIiIiDaVZ3rmZMGECwcHBJCcnM23aNBITEwkKCsLf3x93d3cMBgMAPj4+BAUFMX369CoTClxq1qxZhIWFkZSUhI2NDZGRkXTu3JnDhw+zc+dO7O3tmThxYrXLzOXm5kZgYCDTpk3Dzs4Ob29vHBwcmDRpEgsWLMDd3Z2AgADCw8P55z//adYxZs+ezbx583jvvfewt7fn5ZdfxtXVle7du+Pn58fvf/97evbsWeWuUM+ePfnyyy95+eWXmT59Oo8//jhHjhzhtttuA6B9+/b4+PgwefJkunbtSv/+/QHw9/cnNDSUqVOnUllZybx588zORkRERESkodgY6/MMlFwVSktL2blzJz4+PhQVFTFu3Dj27NlT5bG5hpKamlpjgyn1p9vellOG1qEcLacMrUM5Wk4ZWk4ZWoc1H0ur6e/OZnnnprmIiIggKyvrsuWxsbE4ODg02HGPHDnC4sWLL1s+btw4pk6dWuN+rVu3Jj09nbVr12Jra8szzzzTKI2NiIiIiEhzoL98axEREdEkx/X09GTdunVm7RseHm7lakRERERErg7NckIBERERERGRK6XmRkREREREWgQ1NyIiIiIi0iKouRERERERkRZBzY2IiIiIiLQImi1NrKZ7SFJTl3CZb165v6lLEBEREZFGojs316ioqCji4+Prvf3Bgwe5/fbb2bt3bwNWJSIiIiJiPjU3UqfvvvuOd999l0GDBjV1KSIiIiIiNdJjaS1UQUEBc+fOpaioiOLiYsLDw8nOzmblypW4urri4OCAwWAgPj6e/fv3c+bMGd544w1cXV0vG6tTp05ER0czb968JjgTEREREZH6UXPTQuXk5ODn54e3tzcpKSnExsaSnp7Otm3baNeuHb6+vqZtf/zxRzZt2oSNjU21Y1133XWNVbaIiIiIiNnU3LRQLi4uxMTEsGrVKkpLSykpKcHR0RFnZ2eAKo+Y9e/fv8bG5mqXmZnZ1CVckeLi4quu5uZGGVqHcrScMrQO5Wg5ZWg5ZWgdjZGjmpsWKi4uDldXVxYvXkx6ejohISHY2v7vFSuj0Wj63t7evilKbBR9+vRp6hKuSGZm5lVXc3OjDK1DOVpOGVqHcrScMrScMrQOa+WYmppa4zpNKNBC5ebm0q1bNwB2796Nk5MT+fn55OXlUVZWRlpaWhNXKCIiIiJiXWpuWqgJEybw7rvvMmPGDDw9PcnJySEoKAh/f39mz56NwWCo91j79u0jICCATz/9lNdff50ZM2Y0YOUiIiIiIubRY2ktlKenJ7t27TL9PHr0aAD8/PyueKyRI0cycuTIOrfTB2aKiIiISFNScyMms2bN4pdffqmyrG3btqxYsaKJKhIRERERqT81N2ISHR3d1CWIiIiIiJhN79yIiIiIiEiLoOZGRERERERaBDU3IiIiIiLSIqi5ERERERGRFkHNjYiIiIiItAiaLU2spntIUlOXYKLP3BERERG59rTYOzdRUVHEx8dXWVZYWMioUaOaqCLrGzZsWK3rk5OTAdi/fz8bNmyosqw+/v73v7N8+XLzCxQRERERaUQttrm51pWWlrJmzRoAvLy8mDp1KgDvvPNOE1YlIiIiItJwrtrH0goKCpg7dy5FRUUUFxcTHh5OdnY2K1euxNXVFQcHBwwGAwUFBTz99NOUlJQwePBg0/5jx47Fy8sLZ2dnfH19mTdvHmVlZdjZ2bFw4ULc3NxYuHAhGRkZVFRUMGXKFHx9fatdVp34+HgOHTpEbm4ux48fZ86cOSQmJpKVlcWSJUsYMGAAkZGRHDlyhJKSEqZMmYKfnx9/+tOfmDNnDp6ensyYMYNZs2YxaNCgWrM4duwY8+fPx9bWFkdHR1555RWWLl3KsWPHiIiIwNPTk+PHj+Ps7MyxY8eYNWsWAQEBrF+/nmXLlgEX7gIdOHCAlJQUXn75ZVxcXOjUqRMeHh4AvPHGG3z++edUVFTg7+/PAw88YKV/SRERERER67hqm5ucnBz8/Pzw9vYmJSWF2NhY0tPT2bZtG+3atTM1HQkJCRgMBsLCwti5cydJSRfeCykvL8fLywsvLy/CwsKYMWMGw4cP55NPPiEmJobnnnuOffv2sXv3bsrKynj//fc5f/78Zctq880337Bhwwa2bNnC22+/zfbt24mPjycxMZHevXvj7u5OaGgoxcXFeHt74+fnR3h4OPPnzycwMBB3d/c6GxuARYsW8Ze//IUBAwawatUq1q5dyyOPPMIXX3xBRESE6fG8mTNnEhsbS3R0NAcOHKh2rNdee43FixfTu3dvHn30UTw8PPj888/5/vvvWb9+PaWlpTz44IN4e3vj4OBwJf9kjSozM7OpSzBLcXHxVVt7c6EMrUM5Wk4ZWodytJwytJwytI7GyPGqbW5cXFyIiYlh1apVlJaWUlJSgqOjI87OzgCmpiArK4shQ4YAMHTo0CpjeHp6AnD48GGys7NZsWIFFRUVdOzYkfbt29O9e3eefPJJ7r33Xnx8fGjduvVly2rTr18/bGxs6NSpE7169cLOzg4XFxfS0tJo06YNv/zyC5MnT8be3p7c3FwAbr75Zm699VYiIyPZunVrvbLIyspiwIABwIU7MNHR0TXeUarL999/T+/evQEYMmQIJSUlpKWl8cUXXxAQEABAZWUlOTk5prs6zVGfPn2augSzZGZmXrW1NxfK0DqUo+WUoXUoR8spQ8spQ+uwVo6pqak1rrtqm5u4uDhcXV1ZvHgx6enphISEYGv7v1eIjEaj6evF5ZWVlVXGsLe3N31dunQpnTt3rrJ+5cqVHD16lMTERBISEli9enW1y2rSqlWrar83Go0cPHiQzz77jHXr1mFvb8/AgQNN63/++Wfs7e3Jy8vjhhtuuKJcysrKquRQExsbmyo/l5eXA1SbYevWrXnooYd4/PHHr6gWEREREZHGdNVOKJCbm0u3bt0A2L17N05OTuTn55OXl0dZWRlpaWkA9OjRg4yMDIAaH8UaMGAAu3fvBiAlJYUdO3Zw6tQp1q5dS9++fQkODub8+fPVLrOk/i5dumBvb8+ePXuoqKigtLSUtLQ08vPziYyMZMGCBfUay2AwcPjwYQAOHTpEv379sLW1paKi4rJtLzYsbdu25cyZMwB89dVXFBYWAuDq6srXX39tasDgwh2uvXv3UllZSUlJSb3rEhERERFpTFftnZsJEyYQHBxMcnIy06ZNIzExkaCgIPz9/XF3d8dgMADg4+NDUFAQ06dPrzKhwKVmzZpFWFgYSUlJ2NjYEBkZSefOnTl8+DA7d+7E3t6eiRMnVrvMXMOHDyc2NhZ/f3+8vb0ZOXIkERERHD9+nNdffx0PDw/at2/Prl27GDduXK1jvfDCC/z1r3/FxsaGG264gcjISNq0aUNZWRmzZ89m5MiRpm379OnDQw89xHvvvcf111/P5MmTGThwIO7u7gD8+c9/5plnnsHNzY0uXboAFx7xGzZsGJMmTcJoNJpmXvstfbaMiIiIiDQlG+PF/5UvYoHU1NQam0epPz3TazllaB3K0XLK0DqUo+WUoeWUoXVY852bmv7uvGrv3DQXERERZGVlXbY8NjbWKrOJ7dmzx/R5NZcKDAxkzJgxFo8vIiIiItJSqLmxUERERIOOP3r0aEaPHt2gxxARERERaQmu2gkFRERERERELqXmRkREREREWgQ1NyIiIiIi0iKouRERERERkRZBEwqI1XQPSWrqEvRZOyIiIiLXsKv6zk1UVBTx8fFVlhUWFjJq1KgmqqjxjBo1isLCwhrXJycnAxfmE1+2bBlwYVrp0tLSeo2/d+9eQkJCLC9URERERKSRXNXNjdTsnXfeAaBPnz7Mnj0bgDVr1lBWVtaUZYmIiIiINJhm/VhaQUEBc+fOpaioiOLiYsLDw8nOzmblypW4urri4OCAwWCgoKCAp59+mpKSkiqfVjp27Fi8vLxwdnbG19eXefPmUVZWhp2dHQsXLsTNzY2FCxeSkZFBRUUFU6ZMwdfXt9pl1YmPj+fQoUPk5uZy/Phx5syZQ2JiIllZWSxZsoQBAwawfv16duzYga2tLd7e3syYMYPTp0/z/PPPA1BeXk5UVBTdunVjzJgxeHt7k5aWhpOTE++88w62trX3n6dPnyYsLIyysjJsbGxYtGgRH374IceOHWPWrFkEBASwfv16Ro0axX/+8x8effRRFi1axNy5c013vXx9fVm2bBmFhYUEBwdzww030K1bN9MxqjsHEREREZHmplk3Nzk5Ofj5+eHt7U1KSgqxsbGkp6ezbds22rVrZ2o6EhISMBgMhIWFsXPnTpKSLrz7UV5ejpeXF15eXoSFhTFjxgyGDx/OJ598QkxMDM899xz79u1j9+7dlJWV8f7773P+/PnLltXmm2++YcOGDWzZsoW3336b7du3Ex8fT2JiIh07diQ5OZmNGzcCMGXKFO69915+/vlngoKC+L//+z+2bt3Khg0bCAkJ4eTJk0yYMIHg4GAefvhhjh07Rp8+fWo9/tKlS3nooYe47777SE5OJjo6mqioKGJjY4mOjubAgQMA+Pj4sGzZMmJjY8nNza12rJiYGGbNmoW3tzcvvfQSACdPnqz2HNzc3Or5r9i4MjMzm7oEixQXF1/159DUlKF1KEfLKUPrUI6WU4aWU4bW0Rg5NuvmxsXFhZiYGFatWkVpaSklJSU4Ojri7OwMwKBBgwDIyspiyJAhAAwdOrTKGJ6engAcPnyY7OxsVqxYQUVFBR07dqR9+/Z0796dJ598knvvvRcfHx9at2592bLa9OvXDxsbGzp16kSvXr2ws7PDxcWFtLQ00tPT+fbbbwkMDAQuvA/0/fff07VrVxYuXMjy5cvJy8ujb9++ALRt25bevXsD0KVLF/Lz8+vMKCMjg7lz5wIwbNgw3nzzzXplW52srCxTpsOGDWP//v01nkNzbW7qagabu8zMzKv+HJqaMrQO5Wg5ZWgdytFyytByytA6rJVjampqjeuadXMTFxeHq6srixcvJj09nZCQkCqPaRmNRtPXi8srKyurjGFvb2/6unTpUjp37lxl/cqVKzl69CiJiYkkJCSwevXqapfVpFWrVtV+bzQasbe3Z+TIkcyfP7/KPqGhoYwYMYIpU6aQnJzMvn37ALCzs6uy3cXzq42NjY1pu7KysjofY7u4z6XKy8tNx7u47mKONZ2DiIiIiEhz06wnFMjNzTW9+7F7926cnJzIz88nLy+PsrIy0tLSAOjRowcZGRkApsewfmvAgAHs3r0bgJSUFHbs2MGpU6dYu3Ytffv2JTg4mPPnz1e7zFx9+/blwIED/PrrrxiNRhYuXEhxcbHpvIxGI3v27LHoJf/+/fubzvnQoUP069cPqL4xsrGxoaKigrZt23L27FmMRiM5OTmcPHkSqD7Hms5BRERERKS5adZ3bi6+f5KcnMy0adNITEwkKCgIf39/3N3dMRgMwIX3SYKCgpg+fXqVCQUuNWvWLMLCwkhKSsLGxobIyEg6d+7M4cOH2blzJ/b29kycOLHaZeZyc3MjMDCQadOmYWdnh7e3Nw4ODkyaNIkFCxbg7u5OQEAA4eHh/POf/zTrGLNnz2bevHm899572Nvb8/LLLwMXHs966KGHTBMXwIVH9qZOncratWsZPnw4EydOpHfv3qbbg08++SShoaGsXbsWDw8PysrKajyH6ugzZkRERESkKdkY6/Psk0gdUlNTa2wspf70TK/llKF1KEfLKUPrUI6WU4aWU4bWYc13bmr6u7NZ37lpLiIiIsjKyrpseWxsbI13MazhyJEjLF68+LLl48aNY+rUqQ12XBERERGRq5Gam3qIiIhokuN6enqybt26Jjm2iIiIiMjVRo+liVXUNiWfiIiIiIg11fRYmpobERERERFpEZr1VNAiIiIiIiL1peZGRERERERaBDU3Ui8vv/wykyZNYvLkyRw5cqTKun//+9889NBDTJo0iTfffLNe+1yLzMnw1VdfZdKkSUycOJGPPvqosUtulszJEaC4uBhvb2/i4+Mbs9xmyZwMP/jgA/7whz/g6+vLvn37Grni5ulKcywsLGTWrFkEBAQwefJkPv3006You1mpLcOSkhKCg4Px9fWt9z7XKnNy1PWlKnMyBF1bLmVOhg1ybTGK1OHAgQPGxx57zGg0Go0nTpwwPvzww1XWjxs3zvjDDz8YKyoqjFOmTDEeP368zn2uNeZkmJKSYpw5c6bRaDQaz507Z7zrrrsau+xmx5wcL3r99deNvr6+xm3btjVqzc2NORmeO3fOOHbsWGN+fr7xp59+Mr7wwgtNUXqzYk6O69atMy5ZssRoNBqNp0+fNt5zzz2NXndzUleG8+fPN7777rvGBx98sN77XIvMyVHXl6rMyfAiXVsuMCfDhrq26M6N1CklJQVvb28AevbsyS+//EJBQQEAJ0+e5IYbbuDGG2/E1taWu+66i5SUlFr3uRaZk+GQIUNYunQpAO3atePXX3+loqKiyc6hOTAnR4CsrCxOnDjByJEjm6r0ZsPc/55vv/122rZtS+fOnVmwYEFTnkKzYE6OHTp04Pz58wDk5eXRoUOHJqu/OajrOjFnzhzT+vrucy0yJ0ddX6oyJ0PQteVS5v733BDXFjU3Uqeff/65ykW4Y8eO5OTkAJCTk0PHjh0vW1fbPtciczK0s7Pj+uuvB2Dr1q14eXlhZ2fXuIU3M+bkCBAVFUVISEjjFttMmZPhqVOnKC4u5oknnmDq1KmmpvFaZk6O999/Pz/88ANjxozB39+f4ODgRq+7OanrOtG2bdsr3udaZE6Our5UZU6GoGvLpczJsKGuLfoQT7liRjNmDzdnn5bsSvLYvXs3W7duZfXq1Q1Y0dWpPjlu376dW2+9FQ8Pj0ao6OpT39/F8+fPEx0dzQ8//EBgYCB79+7Fxsamgau7etQnx4SEBNzc3Fi1ahVfffUVYWFhek7/Erq2WIeuL5bTtcVyTXltUXMjdercuTM///yz6eczZ87QqVOnatf99NNPdO7cGXt7+xr3uRaZkyHAp59+yltvvcXKlStxcnJq3KKbIXNy3LdvHydPnmTfvn2cPn2a1q1b06VLF4YPH97o9TcH5mR43XXXMXDgQFq1akW3bt1wdHTk3LlzODs7N3r9zYU5OaalpTFixAgAevfuzZkzZ6ioqLhm/495bRlac5+WztxMdH35H3My1LWlKnMydHZ2bpBrix5LkzrdcccdfPjhhwAcPXqUzp07m24vdu3alYKCAk6dOkV5eTl79+7ljjvuqHWfa5E5Gebn5/Pqq6/y9ttv0759+6Ysv9kwJ8e//e1vbNu2jffeew8/Pz+eeuqpa/biA+ZlOGLECD777DMqKyvJzc2lqKjomn9fxJwcb7rpJr744gsAvv/+exwdHa/ZxgZqz9Ca+7R05mSi60tV5mSoa0tV5mTYUNcWG6Pu6Uo9LFmyhM8//xwbGxteeuklvvzyS5ycnBgzZgyHDh1iyZIlAIwdO5ZHHnmk2n169+7dlKfQ5K40w82bN7N8+XJ69OhhGiMqKgo3N7emOoVmwZzfxYuWL1+Ou7t7tdN5XkvMyXDTpk1s3boVgCeffJLRo0c3Wf3NxZXmWFhYSFhYGGfPnqW8vJxnnnmG22+/vYnPomnVluHs2bM5ffo0x48fp1+/fjz88MOMHz9e15ZqXGmORUVFur78hjm/ixfp2nKBORk2xLVFzY2IiIiIiLQIeixNRERERERaBDU3IiIiIiLSIqi5ERERERGRFkHNjYiIiIiItAhqbkREREREpEVQcyMiIiIiIi2CmhsREREREWkR1NyIiIiIiEiL8P+Klhwp5yrhygAAAABJRU5ErkJggg==\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"-87eaW7NKdbC"},"source":["xg_preds = np.expm1(xgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = xg_preds\n","sol_fl.to_csv(\"group_xg.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"kNExGGoxLwkK","executionInfo":{"status":"ok","timestamp":1603354761915,"user_tz":-330,"elapsed":24569,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"4db8ef70-02ba-4c2e-c98f-ffa2d17902e9","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = LGBMRegressor(n_estimators = 2000,\n","                        learning_rate = 0.33,\n","                        colsample_bytree = 0.7,\n","                        metric = 'None',\n","                        )\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200, 'eval_metric': 'rmse'}\n","\n","lgb_oofs, lgb_preds, fi = run_gradient_boosting(clf, fit_params, train_proc, test_proc, cat_num_cols)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.291806\n","[400]\tvalid_0's rmse: 0.290584\n","Early stopping, best iteration is:\n","[367]\tvalid_0's rmse: 0.290009\n","\n","AV metric score for validation set is 0.2900093756800576\n","\n","------------- Fold 2 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.299719\n","[400]\tvalid_0's rmse: 0.299598\n","Early stopping, best iteration is:\n","[246]\tvalid_0's rmse: 0.298922\n","\n","AV metric score for validation set is 0.2989215439443187\n","\n","------------- Fold 3 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.296963\n","[400]\tvalid_0's rmse: 0.296618\n","Early stopping, best iteration is:\n","[226]\tvalid_0's rmse: 0.295913\n","\n","AV metric score for validation set is 0.2959125957614814\n","\n","------------- Fold 4 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.290476\n","[400]\tvalid_0's rmse: 0.288466\n","[600]\tvalid_0's rmse: 0.288321\n","[800]\tvalid_0's rmse: 0.289147\n","Early stopping, best iteration is:\n","[627]\tvalid_0's rmse: 0.288178\n","\n","AV metric score for validation set is 0.2881775151239616\n","\n","------------- Fold 5 -------------\n","Training until validation scores don't improve for 200 rounds.\n","[200]\tvalid_0's rmse: 0.321452\n","[400]\tvalid_0's rmse: 0.317818\n","[600]\tvalid_0's rmse: 0.31721\n","[800]\tvalid_0's rmse: 0.317463\n","Early stopping, best iteration is:\n","[621]\tvalid_0's rmse: 0.317027\n","\n","AV metric score for validation set is 0.31702662398234793\n","\n","\n","AV metric for oofs is 0.29818622896261926\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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PZtz585hMpmIiYmhuLiYtWvX4uXlhaurK76+vhiNRmbMmEF5eTmBgYHW6x988EGCgoJo3749YWFhDBw4kLCwsDrHTU1N5dNPP6WkpIQjR44wa9Ys0tPTKSwsZPny5fTt25fk5GR27tyJo6MjwcHBTJkyhe+//545c+YAUFlZyZIlS/D29uaBBx4gODiYnJwc2rRpw5tvvomjY/0eVQoICCAjIwOj0cjHH3/MP/7xD+uxwMBAAgIC2LNnD926daO8vByz2YzBYKBbt25s3rz5KjN+eY6Ojvz+979n1KhR/PDDD3h5edV5TVlZGU5OTrRu3RoHBwciIyNZunQpGzZs4JVXXuGll16yS2wiIiIiIvbUYMXNiRMnCAkJITg4mH379pGYmEhubi7bt2/Hw8PDuhwtLS0NX19foqOjyczMJCPjwnMblZWVBAUFERQUdNVjHz16lC1btrB161beeOMNduzYQWpqKunp6bRr146srCxSUlIAmDBhAiNGjOCnn34iPDycu+++m23btrFlyxaioqI4duwYjz32GJGRkTz55JMcPnwYPz+/esXx0UcfERAQwLFjx/jVr36Fs3PNdPv5+VFcXMyIESMICAhg+PDhDB48mKCgIB588MFLzr9Wjo6O9OrVi6KioisWN3PnzqV169YUFhby7LPP4u7uDkD//v3x9PQkMjISf3//ZrssUERERERubA1W3HTo0IGEhASSkpKoqKigvLwcNzc32rdvD0C/fv0AKCwsZMCAAQAMHDiwRh8BAQHXNHbv3r1xcHCgY8eO9OjRAycnJzp06EBOTg65ubl89dVXTJo0CbgwS/HNN99w2223ERcXx+rVqzl79iz+/v4AuLu707NnTwA6depEaWnpFcdesWIF69ato7q6moCAAEJCQigqKqKqquqScy0WC05OTgAsXbqUwsJCPv74Y9auXUtKSgobN27EwcGh1rEyMzPJy8uzfh45ciRPPfXUZc8tKyurc8bp4rK0iooKpk+fjp+fH/fccw8Ac+bMYdSoUXz00UdX7ENE5EZXUFCAyWSioKCgqUO57imPtlMObacc2q4xc9hgxc2GDRvw8vJi2bJl5ObmEhUVVePLtcVisf682F5dXV2jD4PBcE1j/3zG4+e/WywWDAYDQ4YMYcGCBTWumTt3Lvfddx8TJkwgKyuLDz/8EMBafPwy7tr8/Jmbi2677TaKi4upqKjAxcXF2n7o0CGCg4OxWCxUVFTg4+ODj48PYWFhjBw5km+//ZYuXbrUOtaVnrn5ucrKSo4cOYKvr2+d5wK4uLgwePBgPvvsM2tx07VrV1q3bk27du3q1YeIyI3Kz8+PgoKCes/yS+2UR9sph7ZTDm1n7xxmZ2fXeqzB3nNTUlJi3clr9+7dtGnThtLSUs6ePYvZbCYnJweA7t27W2cf9u/f31DhWPn7+7N//37Onz+PxWIhLi4Ok8lkjddisbBnzx7MZrPdxnR3d2fo0KHEx8db23Jycvjiiy8YMmQI27ZtIyYmxlo4lZaWUl1dbZ3lstXq1asZPHjwVRUmBw8epHv37nYZX0RERESkMTTYzM3F51SysrIIDQ0lPT2d8PBwJk6cSJcuXayzCGPGjCE8PJynn366xoYCP7d161beffddCgoKmDt3Lj4+PixduvSa4urcuTOTJk0iNDQUJycngoODcXV1Zdy4cSxcuJAuXbpYdyb75JNPrvn+fyk6OppXXnmFRx99FBcXF9q1a8fKlStxcnJi7NixFBUVERISQuvWramsrGT+/Pm4urpesc9fLksDSEpKAv63PO706dPceeedREdH1xnjxWduzGYzPXr04OGH9a4GEREREbl+OFjqWmclUg/Z2dm1FqdSf5r6tp1yaDvl0HbKoX0oj7ZTDm2nHNquIZal1fa987p4z83lxMbGUlhYeEl7YmJinTMetjh48CDLli27pP1KD/M3F3v27GH9+vWXtE+aNIkHHnig8QMSEREREbGj67q4aQoBAQHWF2teb4YPH87w4cObOgwRERERkQbRYBsKiIiIiIiINCYVNyIiIiIi0iKouBERERERkRZBxY2IiIiIiLQIKm5ERERERKRFuG53S5Pmp1tURlOH0EIUNXUA15Wji/WyWREREbmgWRU3S5YswdfXl7Fjx1rbysrKGD16NO+//34TRla3/fv388ILL+Dr64vFYqGyspIXX3yR/v37A7Bz507eeustDAYDZrOZ5557joceegiAw4cPs2jRIqqrqzl37hyDBg3ixRdfZMmSJeTn53PixAnOnz+Pt7c3N998M/Hx8fj7+9OvX78aMfzpT3/i5MmT1jiqq6tp3bo1s2bNolevXrXGnpqaysqVK/H29sZiseDi4sLSpUtxcXFh7NixvPPOO7Rr1w6AzMxM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aDvl0D6UR9sph7ZTDm3XEMvSavveWa/d0i6qrKwkOzu7Xg+8twSxsbEUFhZe0p6YmIirq2uDjXvw4EGWLVt2SfvIkSN56qmnar3OxcWF3NxcNm7ciKOjIy+88EKjFDYiIiIiIs1Bnd98Ly4Bu8jPz49nn322wQJqTmJjY5tk3ICAADZt2nRN18bExNg5GhERERGR60OdxU1ycnKNzydOnODHH39ssIBERERERESuRZ3FTUlJSY3Pnp6evPnmmw0WkIiIiIiIyLWos7hxdHTk97//fY22xYsXExUV1WBBiYiIiIiIXK1ai5v33nuP9PR0PvvsMw4fPmxtr6ys5IsvvlBxIyIiIiIizUqtxc2DDz5Ir169WLhwIaGhodZ2R0dHfHx8GiU4ERERERGR+rrisrTbbruNN954gyNHjnD69GngwrtUJk2axM6dOxslQLl+dIvKaOoQWoiipg7A6ujih5s6BBEREZF6q9d7boqKiigqKiIgIIC8vDymTp3aGLE1qCVLluDr68vYsWOtbWVlZYwePZr333//kvN37dpFdHQ0f/3rX7njjjsaM9R6i4qKIj8/H09PTywWC2azmTlz5tC/f39SU1NZuXIl3t7e1vNvvfVWli5desXrLvrjH//If/7zH9LS0pri1kRERERE6lRncfPll1+yZcsWwsLCeP311/nuu+9ISEhojNiajQMHDrB371569OjR1KHUKSIigqFDhwLw9ddfM23aNP7+978DMGrUKCIjI6/6OrPZzPvvv4+LiwuFhYValigiIiIizVKdxU1VVRVGoxGAU6dOceutt3Lo0KEGD8xWRqOR2bNnc+7cOUwmEzExMRQXF7N27Vq8vLxwdXXF19cXo9HIjBkzKC8vJzAw0Hr9gw8+SFBQEO3btycsLIyBAwcSFhZW57ipqal8+umnlJSUcOTIEWbNmkV6ejqFhYUsX76cvn37kpyczM6dO3F0dCQ4OJgpU6bw/fffM2fOHODCpg1LlizB29ubBx54gODgYHJycmjTpg1vvvkmjo6O9cqBt7c3RqORqqqqq8rdz69zcnLi448/plevXvj5+ZGRkcHMmTOvqj8RERERkcZQZ3EzceJEdu3axcSJExk9ejTOzs7cc889jRGbTU6cOEFISAjBwcHs27ePxMREcnNz2b59Ox4eHtblaGlpafj6+hIdHU1mZiYZGRee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o4qKiq67a65uytB2yrB6KEfbKUPbKUPb1WSGKm5q0e+//86uXbuYP38+BoOBoqIimjZtSv/+/cvtm5WVxRNPPMHp06cr3NapUycAq3tuYmJi8PDwoFGjP/+aK7rnBs6/6Nq2bUtgYCCBgYEEBweze/duunbtSqNGjbjzzju58847CQgIIDg4WMVNPXLhtXG9yMnJue6uubopQ9spw+qhHG2nDG2nDG1X3RlmZGRUuk3L0mpRcnIyY8aM4fPPPycpKYnU1FROnz7Nb7/9ZrXfhx9+iKurKz4+PuX62LNnD19++SWPP/54uW0vvvgi69at448//rjkOP7v//6P5557DqPRCEBxcTH5+fm0adOGyMhIPvnkE8u+v//+O15eXldzuSIiIiIi15RmbmpRSkoKMTExlu8NBgPDhw9n2bJl7Nq1i82bN1NQUMBNN93E/PnzLftt376d4OBgzp07h5OTE2+99RbOzs7l+m/atCnjx48nJiaGN998Eyi/LK13796EhoaSnZ1NYGAgN9xwA0ajkbFjx9K2bVsiIyOZPXu25QEDjRo1Iioq6tqFIiIiIiJylQxms9lc24OQ+i8jI4MePXrU9jDqPU19204Z2k4Z2k4ZVg/laDtlaDtlaLtrsSytsvedWpYmIiIiIiINgoobERERERFpEFTciIiIiIhIg6DiRkREREREGgQVNyIiIiIi0iCouBERERERkQZBxY2IiIiIiDQIdfJDPNetW0dSUhKOjo4UFRUxdepU+vbtS0pKCitXrsTBwQGTycQLL7zAwIEDAXjggQfYuHGj5cMsDx8+TFhYGImJiZZ+n3nmGRo3bsyyZcssbQ888ACtW7fG3t6esrIynJycmDdvHh4eHkRERJCdnY2rq6vV/k8//XSF405PT2fy5Ml4e3tb2u69915OnjxJdnY2x44d49y5c7Rr144bb7yRpUuXUlJSwvjx45k4caLVsSaTiddff52OHTsSGxtL8+bNCQoKshrHxo0bycrKYt26dSxZsgSAhIQEMjIyeOeddzAYDBWO88I1BAcHW7JaunSp5YNCV69ebckfYPr06fTs2fOyf2/tI1Iuu49UxX6bjj44/+FqGoeIiIhI/VLnipvDhw/z0UcfsWHDBhwcHDh48CAzZ87E2dmZVatWsWrVKlxdXSksLOTZZ5/FxcWFu+6667L9njhxgtzcXIqK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wDPPPMN9993H559/Tnx8PHZ2djzxxBMEBATU8sjrhvT0dCZPnoy3tzcAt956K+PHj+eVV17BZDLRqlUrFi5ciKOjozKsxMcff8znn39u+T4rK4suXbpw9uxZmjRpAkB4eDhdunRhxYoVpKamYjAYCA0NpX///rU17Drjl19+4cUXX+Spp54iKCiI//3vf1V+/RmNRiIiIvjvf/+Lvb090dHReHl51fYl1biKMpwxYwalpaU0atSIhQsX0qpVKzp37kz37t0tx61evZqysjJlSPkMIyIiqvx/iV6Hf/prjmFhYZw6dQqAvLw8unbtyvPPP8+wYcPo0qULAM2bN2fJkiUUFBQwbdo0CgoKaNKkCW+++aYl/+vJX9/X3HHHHbX7M9EsYoP09HTzc889ZzabzeZ9+/aZn3jiiVoeUd22detW8/jx481ms9l88uRJc//+/c3h4eHmr776ymq/M2fOmAcPHmzOz883nzt3zvzwww+bT506VRtDrnO2bdtmnjRpklVbRESEedOmTWaz2Wx+8803zevWrVOGVZSenm6OiooyBwUFmX/++Werbb/99pt5xIgR5uLiYvOJEyfMDz74oLm0tLSWRlo3nDlzxhwUFGSeOXOmec2aNWaz+cpef4mJieaoqCiz2Ww2f//99+bJkyfX2rXUlooyfOWVV8wpKSlms9lsXrt2rTkmJsZsNpvNvXr1Kne8Mqw4wyv5v0QZnldRjheLiIgw79q1y3zo0CHziBEjym2PjY01x8XFmc1ms/mDDz4wL1iw4JqPua6p6H1Nbf9M1LI0scnWrVsZOHAgAB07duT06dMUFhbW8qjqrp49e7J48WIAmjVrxrlz5zCZTOX227VrF3fccQdNmzbFycmJ7t27s3Pnzpoebr2Rnp7OgAEDALj//vvZunWrMqyid999lxdffLHCbenp6dx77704OjrSokULPD092bdvXw2PsG5xdHQkLi4Od3d3S9uVvP62bt3KoEGDAOjbt+91+ZqsKMO///3vPPjgg8D534rn5eVVerwyrDjDiuh1eGmXynH//v0UFBRccjXKxTle+Ld/vanofU1t/0xUcSM2OX78OM2bN7d836JFC44dO1aLI6rb7O3tLct+NmzYQL9+/bC3t2ft2rWEhIQwZcoUTp48yfHjx2nRooXlOOVqbd++fbzwwgsEBgbyww8/cO7cORwdHQFwc3Pj2LFjyrAKdu/ezd/+9jdatWoFwJIlSxgzZgyzZ8+mqKhIGVagUaNGODk5WbVdyevv4nY7OzsMBgMlJSU1dwF1QEUZNmnSBHt7e0wmE+vXr2fYsGEAlJSUMG3aNEaPHs0///lPAGVIxRkCVf6/RBmeV1mOAAkJCQQFBVm+P378OGFhYYwePdqyrPfiHN3c3Pjjjz+u/aDrmIre19T2z0TdcyPVyqwni1dJWloaGzZsYNWqVWRlZeHq6kqnTp14//33Wbp0Kd26dbPaX7n+qX379oSGhjJ06FAOHTpESEiI1exXZVkpw/I2bNjAiBEjAAgJCeG2226jXbt2/P3vf2fdunXl9leGl3elrz9l+ieTycQrr7zCXXfdRZ8+fQB45ZVXePTRRzEYDAQFBXHnnXeWO04ZnvfYY49d9f8lytBaSUkJGRkZREVFAeDq6srkyZN59NFHKSgoICAggLvuusvqmOs9w4vf1wwePNjSXhs/EzVzIzZxd3fn+PHjlu//+OMPy2+BpWLff/89//jHP4iLi6Np06b06dOHTp06AfDAAw/wyy+/VJjr5ZYfXC88PDx46KGHMBgMtGvXjpYtW3L69GmKiooAOHr0KO7u7sqwCtLT0y1vfgYNGkS7du2Ayl+HF7IVa02aNKny68/d3d0y+2U0GjGbzZbfcF7vZsyYwU033URoaKilLTAwEGdnZ5o0acJdd91leV0qw/Ku5P8SZXhpO3bssFqO5uLiwsiRI3FwcKBFixZ06dKF/fv3W+V4Pf98/Ov7mtr+majiRmxy9913s3nzZgCys7Nxd3fHxcWllkdVdxUUFLBgwQLee+89yxNVJk2axKFDh4Dzbza9vb3x8/Njz5495Ofnc+bMGXbu3FnhbyyvR59//jkrV64E4NixY5w4cQJ/f3/L6/DLL7/k3nvvVYaXcfToUZydnXF0dMRsNvPUU0+Rn58P/Pk6vOuuu/jmm28oKSnh6NGj/PHHH9xyyy21PPK6p2/fvlV+/d19992kpqYC8PXXX9O7d+/aHHqd8fnnn+Pg4EBYWJilbf/+/UybNg2z2UxpaSk7d+7E29tbGVbiSv4vUYaXtmfPHnx8fCzfb9u2jejoaADOnj3LTz/9RIcOHaxyvPBv/3pT0fua2v6ZaDBf7/NoYrNFixbx448/YjAY+Pvf/271A0Gsffjhh8TGxtKhQwdLm7+/P2vXruWGG26gSZMmREdH4+bmRmpqKitXrrQsx3j00UdrceR1R2FhIdOnTyc/Px+j0UhoaCidOnUiPDyc4uJi2rRpQ3R0NA4ODsrwErKysnjnnXdYsWIFAJs2bWLFihXccMMNeHh48MYbb3DDDTewZs0aNm7ciMFg4KWXXrIsF7peZWVlERMTw5EjR2jUqBEeHh4sWrSIiIiIKr3+TCYTM2fO5ODBgzg6OjJ//nz+9re/1fZl1aiKMjxx4gSNGze2/HKsY8eOREVFsXDhQrZt24adnR0PPPAAEyZMUIZUnGFQUBDvv/9+lf4vUYbnVZRjbGwssbGx9OjRg4ceegiA0tJSZs6cyYEDBzCZTAQGBjJy5EjOnDnDyy+/TF5eHs2aNWPhwoU0bdq0lq+qZlX0vmb+/PnMnDmz1n4mqrgREREREZEGQcvSRERERESkQVBxIyIiIiIiDYKKGxERERERaRBU3IiIiIiISIOg4kZERERERBoEFTciIiIiItIgqLgREREREZEGQcWNiIiIiIg0CP8Pl2tExyDTBEAAAAAASUVORK5CYII=\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"hpBKJu6yMVxg","executionInfo":{"status":"ok","timestamp":1603354840469,"user_tz":-330,"elapsed":54980,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"383e26d9-9774-4a5c-8986-d437c87a7187","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = CatBoostRegressor(n_estimators = 2000,\n","                       learning_rate = 0.33,\n","                       rsm = 0.4, ## Analogous to colsample_bytree\n","                       random_state=1)\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","cb_oofs, cb_preds, fi = run_gradient_boosting(clf, fit_params, train_proc, test_proc, cat_num_cols)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","0:\tlearn: 0.7122379\ttest: 0.6995461\tbest: 0.6995461 (0)\ttotal: 11.7ms\tremaining: 23.4s\n","200:\tlearn: 0.2587680\ttest: 0.3029368\tbest: 0.3029368 (200)\ttotal: 1.41s\tremaining: 12.6s\n","400:\tlearn: 0.2234306\ttest: 0.2932421\tbest: 0.2931689 (398)\ttotal: 2.81s\tremaining: 11.2s\n","600:\tlearn: 0.2013485\ttest: 0.2902499\tbest: 0.2902499 (600)\ttotal: 4.2s\tremaining: 9.77s\n","800:\tlearn: 0.1862166\ttest: 0.2898129\tbest: 0.2896755 (763)\ttotal: 5.57s\tremaining: 8.34s\n","1000:\tlearn: 0.1750030\ttest: 0.2884526\tbest: 0.2884427 (997)\ttotal: 6.93s\tremaining: 6.92s\n","1200:\tlearn: 0.1649925\ttest: 0.2879419\tbest: 0.2877670 (1178)\ttotal: 8.3s\tremaining: 5.52s\n","1400:\tlearn: 0.1563843\ttest: 0.2877482\tbest: 0.2876770 (1379)\ttotal: 9.68s\tremaining: 4.14s\n","1600:\tlearn: 0.1486411\ttest: 0.2876688\tbest: 0.2875460 (1423)\ttotal: 11s\tremaining: 2.75s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.287546033\n","bestIteration = 1423\n","\n","Shrink model to first 1424 iterations.\n","\n","AV metric score for validation set is 0.2875460326257226\n","\n","------------- Fold 2 -------------\n","0:\tlearn: 0.7171821\ttest: 0.7315787\tbest: 0.7315787 (0)\ttotal: 8.33ms\tremaining: 16.7s\n","200:\tlearn: 0.2588198\ttest: 0.3157562\tbest: 0.3157562 (200)\ttotal: 1.36s\tremaining: 12.2s\n","400:\tlearn: 0.2202915\ttest: 0.3035248\tbest: 0.3035248 (400)\ttotal: 2.77s\tremaining: 11s\n","600:\tlearn: 0.1986306\ttest: 0.3016394\tbest: 0.3014782 (598)\ttotal: 4.12s\tremaining: 9.6s\n","800:\tlearn: 0.1832611\ttest: 0.3012114\tbest: 0.3010052 (758)\ttotal: 5.53s\tremaining: 8.28s\n","1000:\tlearn: 0.1711318\ttest: 0.3007486\tbest: 0.3005426 (832)\ttotal: 6.93s\tremaining: 6.91s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.3005425536\n","bestIteration = 832\n","\n","Shrink model to first 833 iterations.\n","\n","AV metric score for validation set is 0.30054255302980465\n","\n","------------- Fold 3 -------------\n","0:\tlearn: 0.7075049\ttest: 0.7198048\tbest: 0.7198048 (0)\ttotal: 7.82ms\tremaining: 15.6s\n","200:\tlearn: 0.2578377\ttest: 0.3167449\tbest: 0.3167449 (200)\ttotal: 1.39s\tremaining: 12.5s\n","400:\tlearn: 0.2234349\ttest: 0.3074268\tbest: 0.3072939 (394)\ttotal: 2.76s\tremaining: 11s\n","600:\tlearn: 0.2013522\ttest: 0.3030464\tbest: 0.3026893 (584)\ttotal: 4.17s\tremaining: 9.7s\n","800:\tlearn: 0.1856373\ttest: 0.3022094\tbest: 0.3018154 (783)\ttotal: 5.57s\tremaining: 8.34s\n","1000:\tlearn: 0.1732288\ttest: 0.3023428\tbest: 0.3013721 (960)\ttotal: 6.95s\tremaining: 6.93s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.3013721114\n","bestIteration = 960\n","\n","Shrink model to first 961 iterations.\n","\n","AV metric score for validation set is 0.30137211275523523\n","\n","------------- Fold 4 -------------\n","0:\tlearn: 0.7121444\ttest: 0.6990465\tbest: 0.6990465 (0)\ttotal: 7.77ms\tremaining: 15.5s\n","200:\tlearn: 0.2581147\ttest: 0.2987533\tbest: 0.2987533 (200)\ttotal: 1.39s\tremaining: 12.5s\n","400:\tlearn: 0.2217355\ttest: 0.2897235\tbest: 0.2896765 (399)\ttotal: 2.78s\tremaining: 11.1s\n","600:\tlearn: 0.1993644\ttest: 0.2846142\tbest: 0.2845871 (575)\ttotal: 4.17s\tremaining: 9.72s\n","800:\tlearn: 0.1836018\ttest: 0.2823380\tbest: 0.2823025 (797)\ttotal: 5.62s\tremaining: 8.41s\n","1000:\tlearn: 0.1716255\ttest: 0.2811959\tbest: 0.2811509 (987)\ttotal: 7.15s\tremaining: 7.13s\n","1200:\tlearn: 0.1613566\ttest: 0.2807798\tbest: 0.2807265 (1170)\ttotal: 8.61s\tremaining: 5.73s\n","1400:\tlearn: 0.1527191\ttest: 0.2800718\tbest: 0.2800586 (1372)\ttotal: 10.1s\tremaining: 4.31s\n","1600:\tlearn: 0.1451998\ttest: 0.2794215\tbest: 0.2793557 (1589)\ttotal: 11.5s\tremaining: 2.86s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.2793556844\n","bestIteration = 1589\n","\n","Shrink model to first 1590 iterations.\n","\n","AV metric score for validation set is 0.27935568547594175\n","\n","------------- Fold 5 -------------\n","0:\tlearn: 0.7093109\ttest: 0.7148958\tbest: 0.7148958 (0)\ttotal: 7.47ms\tremaining: 14.9s\n","200:\tlearn: 0.2542711\ttest: 0.3317287\tbest: 0.3317287 (200)\ttotal: 1.37s\tremaining: 12.3s\n","400:\tlearn: 0.2201510\ttest: 0.3229477\tbest: 0.3228518 (398)\ttotal: 2.77s\tremaining: 11s\n","600:\tlearn: 0.1985768\ttest: 0.3189045\tbest: 0.3189045 (600)\ttotal: 4.17s\tremaining: 9.71s\n","800:\tlearn: 0.1830711\ttest: 0.3168435\tbest: 0.3167408 (784)\ttotal: 5.54s\tremaining: 8.3s\n","1000:\tlearn: 0.1714968\ttest: 0.3153272\tbest: 0.3152546 (995)\ttotal: 6.91s\tremaining: 6.9s\n","1200:\tlearn: 0.1610178\ttest: 0.3147877\tbest: 0.3146853 (1186)\ttotal: 8.28s\tremaining: 5.51s\n","1400:\tlearn: 0.1529868\ttest: 0.3143544\tbest: 0.3143266 (1394)\ttotal: 9.65s\tremaining: 4.13s\n","1600:\tlearn: 0.1455906\ttest: 0.3142344\tbest: 0.3140944 (1488)\ttotal: 11s\tremaining: 2.75s\n","Stopped by overfitting detector  (200 iterations wait)\n","\n","bestTest = 0.3140943769\n","bestIteration = 1488\n","\n","Shrink model to first 1489 iterations.\n","\n","AV metric score for validation set is 0.3140943767987759\n","\n","\n","AV metric for oofs is 0.2968257580704843\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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RUREpKGzs1S3zkqkBtLT06ssTsUYVNwYn3JsbMqv8SnHxqccV7jc787r4j03lzJjxgyysrIuao+Nja12xuNaHDhwgNdff/2i9stt5m8odu7cyapVqy5qDwsL46GHHqr/gEREREREatF1XdzYgp+fn/XFmtebfv360a9fP1uHISIiIiJSJ+rsgQIiIiIiIiL1ScWNiIiIiIgYgoobERERERExBBU3IiIiIiJiCNftAwWk4WkblWLrEKTOZds6AJvT+5xEREQargZZ3CQkJJCUlISzszNms5mIiAjuv/9+UlJSiI+Px8nJibKyMv7+978TGBgIQN++fdm6dSuurq4AHD9+nPHjx5OYmGjtd9SoUTRq1Ijly5db2/r27YuXlxcODg6Ul5fj4uLCa6+9hqenJ1FRUWRmZuLh4VHp/GefffaSce/Zs4cJEyZYX1AK8OCDD5Kbm0tmZiYnT57k3LlztGnThhtvvJGYmBiKi4sZPXo04eHhla4tKytj1qxZeHt7s2zZMpo2bcqIESMqxbF161YyMjJISEhg6dKlAKxZs4b09HQWL16MnZ3dJeM8/x1CQ0Ot9yomJoa5c+cCsGrVKuv9B5g8eTL33HNPTVInIiIiImIzDa64OX78OB988AGbNm3CycmJI0eOMH36dFxdXVm5ciUrV67Ew8ODgoICxowZg5ubG/fdd1+1/Z46dYqsrCzMZjP5+fk0adLEeiw2NtZaFCUmJrJkyRJee+01ACIiIujTp0+N4+/evbu10PijxMREDh8+TGRkpLXtwIED+Pn5XXTtli1bWL16NTNnzqzx2F988QWpqamsWrWqysIGoHnz5nzwwQc88cQTuLm5VTqWkpLCF198wYYNG3BxceHEiROMGjWKpUuXctttt9U4FhERERGR+tbg9twUFBRQVFRESUkJAG3btmXdunWsXr2a8ePHW2dR3NzciIiIuORLKS8lNTWVPn360LNnT7Zv317leXfeeSdHjx695u9RU3v27LnkrMhvv/3GzTffXON+jhw5wvz581m2bFm1LzF1cXFh2LBhxMfHX3Rs9erVREZGWvvw9PRk9OjRrFu3rsaxiIiIiIjYQoObuenQoQN+fn7069ePXr16ERAQwMMPP0x2dja+vr6VzvX19SU7u2Z7AJKTk5kyZQr5+fmsW7eOv/zlL5c8Ly0tjY4dO17z96ip9PR0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QkNDmTlzJkFBQda+Xn31VaZOnWqdxRk6dOglx9T7W0RERETEluws1axzOnz4sPXv0tJS0tPTyc/Pr/JJYfLnlJ6eXutFoDQsWudrfMqxsSm/xqccG59yXOFyvzurnbk5P5Nxnq+vL6NGjaqdyK5jO3fuvORT5MLCwnjooYfqdOyxY8dy+vTpSm1ubm6sWLGiTscVEREREWnIqi1uEhISKn0+efIkv/76a50FdL3o168f/fr1s8nYMTExNhlXRERERKQhq7a4ufCRxAAeHh688847dRaQiIiIiIjI1ai2uLG3t+eFF16o1DZ37lyioqLqLCgREREREZErVWVxs337dpKTk9m3bx/fffedtb20tJRvv/1WxY2IiIiIiDQoVRY3Dz/8MB07dmTWrFmEhIRY2+3t7fH29q6X4ERERERERGrqssvSbr31Vt5++20OHz7M77//DkBxcTFhYWFs3bq1XgKU60fbqBRbh3DV9I4eERERketftXtuXn75ZbKzs8nOzsbPz4+MjAxGjx5dH7FJHZo3bx4+Pj4MGTKk2nNLS0t56aWX+OGHHygrK+PFF1+kW7du9RCliIiIiEjN2Vd3wvfff8+6devw9vbmrbfeYuPGjWRlZdVHbNJAJCUlccMNN7BhwwZeffVV5s6da+uQREREREQuUu3MTVlZGQUFBQDk5ubSsmVLDh06VOeBybUpKChg0qRJFBYWYjabiY6OJicnh7i4ODw9PXFxccHHx4fExER27drFr7/+yqJFi/D09Lyor8cff5zHHnsMgGbNmlmXKIqIiIiINCTVFjcjRoxg27ZtjBgxgoEDB+Lo6Mj9999fH7HJNTh58iTBwcEEBgaye/duYmNjOXjwIJs3b8bd3b3ScrSff/6Z9957Dzs7u0v25eTkZP179erV1kLHSEwmk61DaPDMZrPuk8Epx8am/Bqfcmx8ynH1qi1uBg4caP27b9++nD17Fg8PjzoNSq5dixYtWL58OfHx8RQXF1NUVISrqyvNmzcHoGvXrtZzu3TpUmVhc6GEhAQyMzN566236ixuW/H19bV1CA2eyWTSfTI45djYlF/jU46NTzmukJ6eXuWxavfc/N///R8jR45k6NChODk5sWXLFjIzM2s1QKl9q1evxtPTkw0bNjBjxgwsFgv29v9Nt8Visf594cxMVTZu3MhHH33E8uXLa3S+iIiIiEh9q7a4mTVrFi+99BLOzs4APPDAA8yePbvOA5Nrk5eXR5s2bQDYsWMHTZo0IT8/nzNnzlBSUsL+/ftr3NexY8d47733iImJoVGjRnUVsoiIiIjINal2WZqjo2Oll3befvvtlWYApGEaNGgQkZGRpKWlERISQnJyMuHh4YwYMYJWrVrh4+NT4742btzI77//zt/+9jdrW3x8vLXgPU/vihERERERW6q2uGnSpAmbNm3i3LlzfPPNN/z73/+27tuQhsvPz49t27ZZP/fr1w+A4ODgK+4rIiKCiIiIWotNRERERKQuVFncTJ06lTlz5uDq6srJkydp2rQp77zzDnfeeafec2JQY8eO5fTp05Xa3NzcWLFihY0iEhERERGpuSqLm6ysLJ544gl++OEH2rZta23/5Zdf2L59O5s2baqP+KQexcTE2DoEEREREZGrVmVxs379en799Vfmzp1LZGRkfcYkIiIiIiJyxaosbhwdHbnllltYunRpfcYjIiIiIiJyVfTYMxERERERMQQVNyIiIiIiYggqbkRERERExBCqfc+N2Nbx48cZOHAgnTt3BqC4uJg77riDGTNm8NBDD+Hl5YWDg4P1/BdeeIEePXqQkJBAUlISzs7OmM1mIiIiuP/++63njRo1ikaNGrF8+XJrW9++fdm6dSuurq7Wtj179jBhwoRKL/10cnJi5cqVF8XaNiqlVr/7ldJLREVERET+3FTcXAfatWvH2rVrrZ+joqLYunUrALGxsZWKEagoiD744AM2bdqEk5MTR44cYfr06dbi5tSpU2RlZWE2m8nPz6dJkyaXHb979+56sISIiIiINHhalnYd8vPz4+jRo1UeLygooKioiJKSEgDatm3LunXrrMdTU1Pp06cPPXv2ZPv27XUer4iIiIhIfVBxc50pKSlh586ddOrUqcpzOnTogJ+fH/369SMqKorU1FRKS0utx5OTk3n00Ud57LHHSE1NrY+wRURERETqnJalXQdycnIIDQ0F4LvvvmP06NEEBgby2muvMWbMmEp7bmJjY3FxcWH+/PlkZWXx2WefERcXx4YNG1izZg3Hjx/nxIkT+Pv7U1payvTp08nNzaVZs2ZVjr93717r+AD33HMP48ePr7svfJVMJpOtQzA0s9mse2xwyrGxKb/Gpxwbn3JcPRU314EL99yMHz+edu3aWY9das+NxWKh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o0ePZv78+fj5+V017sDAQNv4H374ISkpKUyfPp2JEycyd+5c/vznPwMwZ84cYmNjVdiIiIiIyG1F99zUMVdXVzw8PJg7dy6RkZF4e3sD4OjoyJQpU1izZg0ABQUFFBUV2fabPn16rb1Pp1WrVowePZq1a9de8z4///wzzZs3B+Cpp56iuLiYvXv3smPHDpo3b87DDz9cK7GJiIiIiNQWzdzUsVOnTnH27FmaNm3Kgw8+WGGbl5cX+fn5lJeXM3LkSMaOHUt6ejqPP/44/fr147777qu1ODp06MB7771XbZ+9e/cSGRnJ+fPnuXDhgm3mByA2NpZp06ZhNptZsmRJrcV1vXJzc+vt2He74uJiXX+DU46NTfk1PuXY+JTjmqm4qQPHjh0jMjISq9VKw4YNSUpKYsWKFVgslir7m0wmHnroIXbu3Mk//vEPPvvsM55//nneeustfvOb31R7rJEjR1a45yY5ObnKfufPn6/QrypXLkvbt28fv//970lLSwPAz8+P1q1b07RpU9vsU33w9/evt2Pf7XJzc3X9DU45Njbl1/iUY+NTji/Jysq66jYVN3XgyvtdLrv//vvJycmhS5cutrbvvvsODw8PTCYTxcXFNGrUiODgYIKDg+ncuTOZmZk1FjdV3XNTlZycnOv6MHTt2pXjx49jsVhsRZGPjw9Nmza95jFERERERG4l3XNzi4SHh5OWlsa3334LQGlpKbNnz2bo0KGUl5fTr18/vv76a1v/H374gZYtW9bKsb/99ltWr17N7373u+vax8XFpcbZHhERERGR24Vmbm4RLy8v5s2bx6uvvmp7RPSzzz5LSEgIAG+++SYJCQm2/i1btmTatGk1jvvfy9L69u3L448/blsaZzabsVgsTJs2DS8vr2rHunzPDVwqvt54443rOke9g0ZERERE6pPJarVa6zsIufNlZWXxyCOP1HcYUoe0ztf4lGNjU36NTzk2PuX4kuq+d2rm5i4zbtw4zp07V6HN2dmZZcuW1VNEIiIiIiK1Q8XNXWbx4sX1HYKIiIiISJ3QAwVERERERMQQVNyIiIiIiIghqLgRERERERFDUHEjIiIiIiKGoOJGREREREQM4Y58WlpSUhK+vr6Ehoba2s6fP0+/fv345JNP6jGyuvf000+zefNmmjRpcs37LF++nK5du9K5c2e2bdvGM888c037xcTE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HDhwgG3btlFYWMh9993H7Nmzbf327t1LZGQkFy9exMnJifnz59OkSZNK47u4uDBixAiSkpJ48803gcrL0h599FHGjRvH4cOHCQ8Pp1GjRpSWljJ06FBatmxJXFwc06ZNsz1goEGDBiQkJNTdRRERERERuUEmq9Vqre8g5M6XlZXFI488Ut9hSB3SVLjxKcfGpvwan3JsfMrxJdV979SyNBERERERMQQVNyIiIiIiYggqbkRERERExBBU3IiIiIiIiCGouBEREREREUNQcSMiIiIiIoag4kZERERERAxBL/GUWtM6NvOm9j8++7e1FImIiIiI3I0MO3OTlJREenp6hbbz58/z9NNP11NEte/RRx+tdvvWrVsB+Oyzz1i7dm2Ftmvx7rvvsmjRohsPUERERETkFjJscXO3M5vNrF69GoCgoCAGDx4MwPLly+sxKhERERGRunPHLksrKipi0qRJXLhwgeLiYuLj4zl27BgrVqzA09MTJycnfH19KSoq4uWXX6akpIRHHnnEtn+vXr0ICgrCzc2N0NBQXnvtNUpLS7G3t2fmzJl4eXkxc+ZMcnJysFgshIeHExoaWmVbVdLT09m3bx/5+fkcPXqUCRMmkJGRQV5eHvPmzaNTp04kJiZy8OBBSkpKCA8PJywsjGHDhjFhwgQCAgIYPnw448aN4+GHH672Whw5coTp06djZ2dHkyZNmD17NgsWLODIkSMkJCQQEBDA0aNHcXNz48iRI4wbN47IyEjS0tJYuHAhcGkWaM+ePezevZtZs2bh7u6Oh4cHPj4+ALz11lt88cUXWCwWIiIi6Nu3by1lUkRERESkdtyxxc3p06cJCwsjODiY3bt3k5yczKFDh/jggw+45557bEXHpk2b8PX1JS4uji1btpCZeem+kLKyMoKCgggKCiIuLo7hw4fz2GOP8be//Y2lS5fyyiuv8Omnn7Jjxw5KS0vZuHEjZ8+erdRWnePHj7N27Vref/993n77bT788EPS09PJyMjAz88Pb29vpkyZQnFxMcHBwYSFhREfH8/06dOJiorC29u7xsIG4I033uAPf/gDnTp1YuXKlaxZs4YXX3yRAwcOkJCQYFueN2LECJKTk1m8eDF79uypcqw333yTuXPn4ufnx8iRI/Hx8eGLL77gu+++Iy0tDbPZzIABAwgODsbJyel6Ulaj3NzcWh1Paldx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ixdp1aoV9957L4sXL65ynEWLFtG0aVMiIiJsbZGRkcTHx9O4cWP69etHhw4dADCbzTzwwAMkJCRUeDnoZa1jM2u83lU5Pvu3N7SfiIiIiMiV7uri5tSpU/zlL39hw4YNODg4cPz4caZOnUqTJk1YtWoVq1atwtXVlaKiIkaOHImzszO//vWvaxz3l19+IS8vj+LiYgoLC3FxcbFtS05OthVF6enpLFiwgFmzZgEwceJEnnrqqWuOPzAwkIULF1a5LT09naNHj1b5vpzr0aZNmwqPpY6NjWXz5s2EhITc1LgiIiIiIrXtrl6WVlRURElJCaWlpQC0bt2ad999l5SUFGJiYmyzKM7OzkycOJHVq1df07hbtmzhqaee4vHHH2f79u1X7depUydOnDhx0+dxKwUEBNxxMYuIiIjI3eGuLm78/PwICAigR48exMbGsmXLFsrKyvjmm2/w9/ev0Nff359vvvnmmsbNyMjgt7/9LX379mXLli1X7bd161YefPDBmzqHW6m0tJSdO3fSvn37+g5FRERERKSSu3pZGsCcOXPIy8tj165drFixgnXr1lFeXk55eXmFflarFavVetVxTCYTACdPnuTHH3/kkUceoaysjKlTp3LmzBmaNWsGwMiRI7G3t+fkyZM88sgjvP7667Yx5s+fz6pVq2x/T5w4kc6dO1/1mHv37iUyMtL297PPPktYWNj1XYAazufYsWO2Yxw5coQRI0bY7j2qLbm5ubU6ntSN4uJi5crglGNjU36NTzk2PuW4Znd1cWO1WjGbzbRt25a2bdsSGRlJnz598PT0JCcnhxYtWtj65ubm8qtf/QqApk2bUlhYaLt35syZM3h4eACXZm1KSkps96SUlZXx8ccfM2TIEOA/99y8++67HD9+HGdnZ9sxavOem2vVrFkzzp07V6Ht8vkUFRVVuOcmJiaGNm3a3NTxqvLfs2Rye8rNzVWuDE45Njbl1/iUY+NTji/Jysq66ra7elnahg0biI+Pt83IFBYWUl5ezogRI1i4cCFnzpwBLt2b86c//YmoqCgAunXrxocffghcKpA2bNhAUFAQAJmZmaxevZpNmzaxadMmFi9eTGZm5aeIDRo0iL179/Lll1/eilO9qq5du7Jjxw4uXrwIwBdffIGLi0uFp7Zd9uqrrzJv3jxbXxERERGR28ldPXMTGhrKN998Q1hYGI0bN7YtI3vyySfJz88nPDycJk2aYDKZGDZsGN26dQMgOjqamTNnMmTIECwWC4GBgQwaNIgvv/wSR0dH2rVrZztGly5d+OWXX/j3v/9d4dgNGjTgD3/4AwkJCaxbtw6ovCytbdu2JCQk1Ok1eOCBBxg2bBjDhg3DwcGBJk2aMHfu3Cr7+vj48Mwzz7Bs2TImTpxYp3GJiIiIiFwvk7W6G0mE+Ph4/Pz8bMvKpGpZWVk88sgj9R2G1CFNhRufcmxsyq/xKcfGpxxfUt33zrt65uZaREdH8/LLL7N161aWLFnCPffcc0uPP27cuEr3xDg7O7Ns2bJrHsNsNvPiiy9Wam/Tpg3Tp0+/6RhFRERERG4HKm5q0KJFC95///16O/7ixYtvegxHR8cKL+IUERERETGiu/qBAiIiIiIiYhy650ZqRXWP5BMRERERqU1Xu+dGxY2IiIiIiBiClqWJiIiIiIghqLgRERERERFD0NPS5KbNmjWLAwcOYDKZiIuLIyAgoL5Dklq0Z88exo8fj6+vL3Dpxa/x8fH1HJXUhq+++oqxY8fyu9/9joiICP7973/zhz/8AYvFgoeHB3PnzsXR0bG+w5Sb8N85jo2N5fDhw7i6ugLw4osv0r179/oNUm7YnDlzyMrKoqysjJdeeomOHTvqM2ww/53jTz75RJ/hGqi4kZuyd+9eTpw4wfr168nLyyMuLo7169fXd1hSywIDA1m4cGF9hyG16MKFC8yYMYNu3brZ2hYuXMjgwYPp06cP8+fPZ8OGDQwePLgeo5SbUVWOASZOnMhTTz1VT1FJbfn88885evQo69evJz8/nwEDBtCtWzd9hg2kqhz/+te/1me4BlqWJjdl9+7dBAcHA9C2bVvOnTtHUVFRPUclIjVxdHQkOTmZ5s2b29r27NlDjx49AHjqqafYvXt3fYUntaCqHItxdO3alQULFgBwzz33cPHiRX2GDaaqHFsslnqO6van4kZuys8//0zTpk1tfzdr1ozTp0/XY0RSF77++mtGjx5NeHg4//jHP+o7HKkFDRo0wMnJqULbxYsXbUtY3Nzc9Fm+w1WVY4B3332XqKgoJkyYwJkzZ+ohMqkN9vb2NG7cGIANGzYQFBSkz7DBVJVje3t7fYZroGVpUqv0ZHHjad26NePGjaNPnz6cPHmSqKgotm/frnXcBqfPsjH1798fV1dX/P39Wb58OYsXL2batGn1HZbchB07drBhwwZWrVpFr169bO36DBvHlTnOycnRZ7gGmrmRm9K8eXN+/vln298//fQTHh4e9RiR1DZPT0/+93//F5PJRKtWrXB3d+fHH3+s77CkDjRu3Jji4mIAfvzxRy1nMqBu3brh7+8PwNNPP81XX31VzxHJzdi1axd//vOfSU5OxsXFRZ9hA/rvHOszXDMVN3JTHn/8cbZt2wbA4cOHad68Oc7OzvUcldSmjz76iJUrVwJw+vRpfvnlFzw9Pes5KqkLjz32mO3zvH37dp544ol6jkhq28svv8zJkyeBS/dYXX4Kotx5CgsLmTNnDm+//bbtyVn6DBtLVTnWZ7hmJqvmLeUmzZs3jy+++AKTycQf//hH/Pz86jskqUVFRUW88sorFBQUUFpayrhx43jyySfrOyy5STk5OSQlJfHdd9/RoEEDPD09mTdvHrGxsZSUlODl5UViYiIODg71HarcoKpyHBERwfLly2nUqBGNGzcmMTERNze3+g5VbsD69etZtGgRbdq0sbXNnj2bqVOn6jNsEFXlODQ0lHfffVef4WqouBEREREREUPQsjQRERERETEEFTciIiIiImIIKm5ERERERMQQVNyIiIiIiIghqLgRERERERFDUHEjIiIiIiKGoOJGREREREQMQcWNiIiIiIgYwv8Dp/MEqHNe8tcAAAAASUVORK5CYII=\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"markdown","metadata":{"id":"yVpl7uf2NUiy"},"source":["### Feature Selection"]},{"cell_type":"code","metadata":{"id":"H9B9OdDjNW0f","executionInfo":{"status":"ok","timestamp":1603354852679,"user_tz":-330,"elapsed":1686,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"789da15b-ca2b-4800-c34c-89058f4fdeb3","colab":{"base_uri":"https://localhost:8080/","height":391}},"source":["fi"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["feature\n","SQUARE_FT_UR              0.585017\n","address_min_logitude      0.605154\n","addr1_min_POSTED_BY       0.675994\n","address_max_lotitude      0.681833\n","ADDRESS                   0.750793\n","address_mean_logitude     0.781945\n","POSTED_BY                 1.045578\n","addr1_max_POSTED_BY       1.102351\n","RESALE                    1.336529\n","adr_2                     1.981916\n","addr_mean_resale          3.083256\n","addr1_mean_RERA           3.527778\n","adr_1                     3.826246\n","BHK_NO.                   6.726490\n","LATITUDE                  7.324611\n","SQUARE_FT/BHK_NO.         7.723556\n","addr1_mean_POSTED_BY      8.410380\n","LONGITUDE                 9.403092\n","addr_mean_POSTED_BY      10.748650\n","SQUARE_FT                26.424108\n","Name: importance, dtype: float64"]},"metadata":{"tags":[]},"execution_count":128}]},{"cell_type":"code","metadata":{"id":"aSsJ8uy8OG5b"},"source":["to_drop_cols = ['address_max_logitude']"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"xWCthZNrOPb-"},"source":["cat_num_col = [c for c in cat_num_cols if c not in to_drop_cols]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"nRGeG2R-OkkZ","executionInfo":{"status":"ok","timestamp":1603352083818,"user_tz":-330,"elapsed":138627,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"5c7fdd42-dde1-47f4-ae0e-d42c5b6e04b2","colab":{"base_uri":"https://localhost:8080/","height":1000}},"source":["clf = XGBRegressor(n_estimators = 1000,\n","                    max_depth = 5,\n","                    learning_rate = 0.33,\n","                    colsample_bytree = 0.7,\n","                    random_state=1)\n","\n","fit_params = {'verbose': 200, 'early_stopping_rounds': 200}\n","\n","xgb_oofs, xgb_preds, fi = run_gradient_boosting(clf, fit_params, train_proc, test_proc, cat_num_col)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","[07:32:25] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.5892\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.28332\n","[400]\tvalidation_0-rmse:0.278702\n","[600]\tvalidation_0-rmse:0.278107\n","Stopping. Best iteration:\n","[494]\tvalidation_0-rmse:0.277043\n","\n","\n","AV metric score for validation set is 0.27704289992010994\n","\n","------------- Fold 2 -------------\n","[07:32:50] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.60143\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.292164\n","[400]\tvalidation_0-rmse:0.28842\n","Stopping. Best iteration:\n","[378]\tvalidation_0-rmse:0.287488\n","\n","\n","AV metric score for validation set is 0.28748763395404725\n","\n","------------- Fold 3 -------------\n","[07:33:10] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.59369\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.298796\n","[400]\tvalidation_0-rmse:0.292151\n","[600]\tvalidation_0-rmse:0.289762\n","[800]\tvalidation_0-rmse:0.289115\n","Stopping. Best iteration:\n","[779]\tvalidation_0-rmse:0.289075\n","\n","\n","AV metric score for validation set is 0.2890753456018583\n","\n","------------- Fold 4 -------------\n","[07:33:43] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.58321\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.290037\n","[400]\tvalidation_0-rmse:0.282294\n","[600]\tvalidation_0-rmse:0.281238\n","Stopping. Best iteration:\n","[493]\tvalidation_0-rmse:0.280886\n","\n","\n","AV metric score for validation set is 0.2808865821900417\n","\n","------------- Fold 5 -------------\n","[07:34:07] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n","[0]\tvalidation_0-rmse:2.59377\n","Will train until validation_0-rmse hasn't improved in 200 rounds.\n","[200]\tvalidation_0-rmse:0.317319\n","[400]\tvalidation_0-rmse:0.312591\n","[600]\tvalidation_0-rmse:0.310262\n","[800]\tvalidation_0-rmse:0.309222\n","[999]\tvalidation_0-rmse:0.308689\n","\n","AV metric score for validation set is 0.3085396242554467\n","\n","\n","AV metric for oofs is 0.2888111163794029\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAzwAAAFiCAYAAAAz7d1AAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde1xVZdr/8Q8gSIJEHoIyGRVR8EAHlclKTEVL0zQnUsONljhNkjqgBvqI8ZhlmFkesimU8ICOqYwkoPVozViNaeFMimE/41BZjZmQcpDj3r8/fLlHkmMCC/H7/kf32ve672td9prXvuY+LBuLxWJBRERERESkBbI1OgAREREREZHGooJHRERERERaLBU8IiIiIiLSYqngERERERGRFksFj4iIiIiItFgqeEREREREpMVqZXQA0jKkpaUZHYKIiIiIXCf69etX57YqeKTB1Oc/PGk4GRkZ+Pj4GB3GdUm5N45ybxzl3jjKvXGUe+NUlfv6/h/tWtImIiIiIiItlgoeERERERFpsbSkTRpMl8gUo0O4jmUZHcB1TLk3jnJvHOXeOMq9cZT7S3JeesjoEOqlWRU8MTExeHl5MX78eOu1wsJCxowZwwcffGBgZLU7dOgQs2fPxsvLC4vFQnl5OXPnzqV///4A7N69m7fffht7e3vKysp46qmneOCBBwD46quveOGFFzCbzRQVFTFw4EDmzp1LTEwMx48f58yZM1y4cAEPDw9uvPFG1qxZQ+/evbnrrrsqxfDcc89x9uxZaxxms5k2bdoQFhZGr169qo09MTGRlStX4uHhgcViwcHBgWXLluHg4MD48eN55513aNeuHQCpqans3buXVatWNVImRUREREQaTrMqeK51fn5+1kLg22+/5Y9//CN79+7lX//6F/Hx8cTFxeHq6kpBQQHTp0/HxcWFgQMHsmTJEubNm4evry9ms5nQ0FCOHz9OZGQkcLEgOXnyJBEREdaxnJ2d2bRp0xUxnD17tlIcx48fZ9asWWzZsoWbb7652thHjRpl7X/NmjXs3LmTp556iqlTp7J27VoWLlxIaWkpr7/+On/5y18aLGciIiIiIo2pSQuegoIC5syZQ1FREcXFxURFRZGdnc26detwc3PD0dERLy8vCgoKmDlzJiUlJZVO/hoxYgT+/v60b9+ep59+usox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q6trpfZPPPFElXEfOnSI2bNn4+XlZb02aNAgcnNzOX78OGfOnOHChQt4eHhw4403smbNGkpLSwkJCSE0NLTSvRUVFTz//PN4enqyevVqbrrpJiZPnlwpjt27d5Oenk5CQgKrVq0CYOPGjaSlpfHaa69hY2NTZZyXnsFkMllztWbNGl566SUA4uPjrfkHmDt3LgMGDKj1361LZEqtbaSxZBkdQCU5Lz1kdAgiIiIiQDMseE6dOsU777zDjh07sLe3Jycnh4ULF+Lk5ERcXBxxcXG4urpSUFDA9OnTcXZ25u67766137Nnz5KZmUlxcTH5+fm0bdvW+l1sbKy1UEpMTGTlypW8+OKLAISHhzNkyJA6x+/n52ctPn4tMTGRkydPEhERYb129OhRfH19r7h3165dbNiwgcWLF9d57E8++YTU1FTi4+OrLXYA2rdvzzvvvMMjjzyCs7Nzpe9SUlL45JNP2Lp1K46Ojpw+fZpp06axatUqunXrVudYRERERESag2a3pK2goICSkhLKysoA6NKlC5s3b2bDhg3MmjXLOtvi7OxMeHg48fHxdeo3NTWVIUOGcO+99/L+++9X2+7222/nm2++uernqKtDhw5VOXvy888/c/PNN9e5n5ycHJYtW8bq1atxdHSssa2joyMTJ05k/fr1V3y3YcMGIiIirH24ubkREhLC5s2b6xyLiIiIiEhz0exmeLy9vfH19WXYsGEMHjwYf39/RowYQVZWFj4+PpXa+vj4kJVVt6U8ycnJzJs3j/z8fDZv3swf/vCHKtvt3buXXr16XfVz1FVaWhpTpkzh+PHjHD58GJPJRGFhIUVFRWzatMnabuPGjbz33nvWz2fOnLH+PT8/n6effprQ0FA6duxYp3EnTJjAo48+yuOPP17p+vfff4+np2ela97e3iQlJf2WxxMRERERMVSzK3gAli1bRmZmJh999BHr1q1j69atmM1mzGZzpXYWiwWLxVJtP5eWdX333XecPn2afv36UV5ezsKFC8nNzaVdu3YATJ8+HTs7O7777jv69evH//7v/1r7WLFiBXFxcdbP4eHh3HnnndWOealoueThhx8mMDCwyralpaWUlpZal5VdvqTts88+489//jMJCQkABAcHX7GH55Ljx48ze/Zs3njjDe6///4rlqlVpVWrVjz11FOsXr2aP/7xj7W2t7VtdpOB0oxlZGQYHUKTKC4uvm6etblR7o2j3BtHuTeOcm+chsh9syt4LBYLpaWleHp64unpiclkYuTIkbi5uZGeno67u7u1bUZGBt27dwfgpptuIj8/37oXJzc31zrbkZycTElJCePGjQOgvLycPXv2EBQUBPx3D8/mzZvJycmpVDA05B6eX/v3v/9t3b/zawMGDCAnJ4eKiopa+7n77rsJCgqiuLiY6Oholi9fXqfxR44cyYYNG8jJybFeu+222zhx4kSl2bTL8yxSF7+ejW2pMjIyrptnbW6Ue+Mo98ZR7o2j3BunqtynpaXVq49m93/b79ixg6ioKOvMTX5+PmazmZCQEFatWkVubi5wca/Pa6+9RnBwMAADBw5k165dwMWiaceOHfj7+wMXN+JfOnksKSmJNWvWkJJy5YliEydO5PDhw5w4caIpHpXDhw/j5+dX5Xfffvstbdu2xc7Ors79Pfnkk/z888/s3LmzzveEhYWxYsUK6+cpU6YQExPDhQsXAPjpp5+Ii4urNLskIiIiInKtaHYzPOPHjycrK4vAwEDatGljXYI2ePBg8vLymDRpEk5OTtjY2PDEE08wcOBAAEJDQ1myZAlBQUFUVFTg5+fHxIkTOXHiBA4ODvTs2dM6Rv/+/Tl79iw//vhjpbFbtWrFs88+S3R0NFu3bgWuXNLm6elJdHR0gzzr559/ztSpU62fL18OV1ZWxgsvvFCv/mxsbIiJiWHixInccccdV+zFqcrvf/97OnToYP08atQoioqKmDhxIq1bt8bGxoZ58+bRuXNn4GKBtHTp0loPRhARERERaQ5sLDVtgmmmoqKi8Pb2ti5JE+OlpaXRr18/o8O4Lmma3TjKvXGUe+Mo98ZR7o2j3BunuiVt9fnd2exmeOoiNDSUmTNnsnfvXl5//XVcXFyadPxnnnmGc+fOVbrm7OzMG2+80aRx1GTbtm0kJydfcb22QxdERERERFqSa7LgcXd3Z/v27YaNv2bNGsPGrqsJEyYwYcIEo8MQERERETFUszu0QEREREREpKGo4BERERERkRZLBY+IiIiIiLRYKnhERERERKTFUsEjIiIiIiIt1jV5Sps0T10iU4wO4TqW9ZvuynnpoQaOQ0RERKR5uSYKnpiYGLy8vBg/frz1WmFhIWPGjOGDDz4wMLL/SkxMZOXKlXh4eGCxWLCxseG5556je/fuAMTHx5OUlISDgwMAc+fOZcCAAQAcOnSIlStXYmtrS2FhIWPHjmXq1KnMmTOHn376ie+//55WrVrh5uaGp6cnISEhjBkzhj59+lSKYfXq1XzwwQfWOMxmMzfddBMRERF07ty52thXr17N7t27cXNzo7y8nI4dOxITE8PPP//M9OnTeffdd61xx8bGkpubS0RERGOkUURERESkQV0TBc+1YtSoUdZC4PDhwyxZsoT4+HhSUlL45JNP2Lp1K46Ojpw+fZpp06axatUqunXrxqJFi9i4cSNubm4UFxczdepURo0axSuvvAJcLEhuuukmJk+eDMCpU6fo2rUrmzZtqjWOjz/+mJCQEN59911at25dbezBwcHW/ufPn8/+/fsZPXo0Q4YMISEhgSeeeIK8vDx27NjBjh07GixnIiIiIiKNqVkUPAUFBcyZM4eioiKKi4uJiooiOzubdevW4ebmhqOjI15eXhQUFDBz5kxKSkro16+f9f4RI0bg7+9P+/btefrpp6scIyAggKFDh3Lw4EEGDRqExWLhk08+wd/fn7lz5/LPf/6TlStXYm9vj4uLC6+99hqpqakcPXqURYsWkZSURFpaGosXL67TM91+++188803AGzYsIEXX3wRR0dHANzc3AgJCWHz5s0sWrSIX375haKiIgAcHR3561//ejXprOS+++5jwIAB/N///R+jR4+utX1FRQV5eXm4ubkB8PTTTxMYGMgf/vAH1q5dy9SpU2nbtm2DxSciIiIi0piaRcFz5swZAgMDCQgI4ODBg8TGxnLs2DF27tyJi4uLdSlbUlISXl5eLFiwgNTUVFJSLu4ZKS8vx9/fH39//2rHOHXqFBMmTCAsLAw/Pz82b97M7NmzGTJkCHPnzuXcuXMsX76czp078+yzz/Lxxx8zbtw4kpKSOH78OBs2bCA+Pr7Oz/Thhx/St29fAL7//ns8PT0rfe/t7U1SUhIAs2fP5tFHH8XPz4/77ruP0aNHc+ONN9YnhTXq06cPX3/9dY1tNm7cyHvvvcd//vMfevTowV133QWAi4sLJpOJRYsW8e233xIZGdlgcYnxMjIyjA7hmlZcXKwcGkS5N45ybxzl3jjKvXEaIvfNouDp0KEDa9euZf369ZSWllJSUoKTkxPt27cHsP74zszMtO578fPzq9SHr69vjWM4Oztbi442bdrQu3dvWrVq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8fLLL3Ps2DEiIyOtBQBgLRIuLwx+vXfoUjz1dfmSrMv/XlVhcnmhUNX3l7t878zlysrKyM3NrXRwwIkTJ+jevTtwsXK97bbbmDRpEpMmTcJkMnH06NErCrzL1bSH59fS09N57LHH6tTW1taWgIAAUlNTrQVP27ZtcXV1tc76iIiIiIhcK2p9D8/777/Pl19+SVpaGp9++imffvrpVRc7AHl5eXh4eACwb98+2rZtS35+PufPn6esrMw629K1a1fS09OBi5v1r0WPP/44S5cupaKiArg4a5WSksIjjzzCP//5T/74xz9SVlYGQElJCefPn+fWW29tkLG3bduGq6sr3t7edb7niy++oGvXrg0yvoiIiIiIkWqd4TGZTNYT2i63cePGqxp47NixREREsHfvXoKCgkhOTiY0NJTJkyfTqVMn65HL48aNIzQ0lClTplQ6tOBy27dv59133yUjI4P58+fj6enJsmXLriq+hhQSEsJbb73FuHHjcHR0xNHRkZiYGNq2bcs999zD8ePHmTRpEjfccANlZWVMmTKF2267rcY+f72kDS4e5Q3/XVqXn5/P7373O1566aVaY7y0h6eiooKOHTuydOnSej+n3lcjIiIiIs2NjaWWdVonT560/r28vJy0tDTy8/N5+umnGz04uXakpaVVW5BK49K6YuMo98ZR7o2j3BtHuTeOcm+c6vbw1Od3Z60zPJe/3BIubuCeNm1anQcwSnR0NJmZmVdcj42N/c0noP3www9ERERccb2mAwOai6NHj/Lyyy9fcX3kyJE8/vjjBkQkIiIiItL4ai14EhISKn0+c+YMP/30U6MF1FCio6MbvM9bb72VTZs2NXi/TcHX1/eajV1ERERE5LeqteDJy8ur9NnV1ZW33nqr0QISERERERFpKLUWPLa2tsyYMaPStZdeeonIyMhGC0pERERERKQhVFvwvP/++yQnJ/P555/z1VdfWa+Xl5fz5ZdfquAREREREZFmr9qCZ8SIEfTq1Yvnn3+eoKAg63VbW1s8PT2bJDgREREREZGrUeOStttuu40333yTkydP8ssvvwBQWlpKcHAwu3fvbpIA5drRJTLF6BAanN4tJCIiInJtq3UPz6JFi8jKyiIrKwtfX1/S09MJCQlpitgaVUxMDF5eXowfP956rbCwkDFjxvDBBx9c0X7Pnj0sWLCAbdu20aNH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UlRUxJo1a/D09MTFxQVfX19SU1P5+OOPOXbsGC+++CKenp4XjfW73/2OCRMmANCzZ09OnTp1uQ9HRERERKRVVPDYqePHjxMaGkpQUBC7du0iKSmJ3Nxc3nrrLa655hpCQkKs23733Xds3rwZk8lU71hOTk7W71NSUqzFT0eTn59v9BTaREVFhd0eW3un7I2j7I2j7I2j7I2j7I1ji+xV8NgpNzc3EhMTSU5OpqqqisrKSrp06YKrqysAw4YNs247ZMiQBoudC23YsIF9+/bx17/+tc3m3ZYGDRpk9BTaRH5+vt0eW3un7I2j7I2j7I2j7I2j7I1TX/bZ2dktGkMPLbBTKSkpeHp6smnTJuLi4rBYLDg4/PfXbbFYrN9fuILTkK1bt/LBBx+QmJjYrO1FRERERNoDFTx2qri4mL59+wKQmZlJt27dKC0tpaSkhOrqanJycpo91uHDh9m8eTOrVq2ic+fObTVlERERERGb0yVtdmrSpElERUWRkZHBlClTMJvNREREMHXqVLy9vfH19W32WFu3buXUqVPMmjXL2pacnIyzs3Od7fSeGxERERFpb1Tw2Cl/f3/effdd68+33347AKGhoS0e6/HHH+fxxx+32dxERERERC4XFTxiFRkZyenTp+u0de3aldWrVxs0IxERERGRS6OCR6xWrVpl9BRERERERGxKDy0QERERERG7pYJHRERERETslgoeERERERGxWyp4RERERETEbumhBWIz/aLT22xsveNHRERERFrD7ld4lixZQmpqap228vJyxowZY9CM6jp+/DhPPfVUi/uFhYXx9ddfN/j5jh07qKqqqjP+nj17OHnyZLPG//rrrwkLC2vxvERERERE2hO7L3jaO3d3dxYtWmTzcdeuXUt1dXWd8d96661mFzwiIiIiIvagw1/SVlZWxvz58zlz5gwVFRXExsZSVFTEmjVr8PT0xMXFBV9fX8rKypgzZw6VlZUMHz7c2v+OO+4gMDAQV1dXQkJCWLhwIdXV1Tg6OhIfH4+Xlxfx8fHk5eVRW1vL5MmTCQkJqbetPqmpqezZs4fi4mIKCgqYN28eZrOZwsJCli1bhqurK3PnziU1NZWxY8dy//338+GHH1JVVcXrr79O165dGz3+0tJSoqOjKSkpoaamhieffJKCggI+//xzZs6cyTPPPMP8+fOZP38+mZmZFBQUsHLlSu6++26ysrIAmDt3LlOmTOGXv/wljz76KM7OzgwYMMC6j/fee4/XXnuNTp064efnR3R0tA1+cyIiIiIiba/DFzzHjx8nNDSUoKAgdu3aRVJSErm5ubz11ltcc8011kIkLS0NX19fYmJi2L59O+np5+43qampITAwkMDAQGJiYpg+fTq33HILH330EYmJifzpT39i586dZGZmUl1dzd///ndOnTp1UVtjDhw4wMaNG9m6dSuvvPIKb7/9NqmpqZjNZqZNm2bdrra2luuuu46HHnqIefPm8emnnxIUFNTo2CkpKQQEBDBr1ixyc3NJSEjgb3/7Gy+99BJJSUkUFxcDMGrUKAYNGkRsbCxeXl71jrVu3TruvPNOpk2bxquvvsr+/fspLy9n9erVbNmyBWdnZx599FGys7PrFI2XQ35+/mXdX0dSUVGhfAyi7I2j7I2j7I2j7I2j7I1ji+w7fMHj5uZGYmIiycnJVFVVUVlZSZcuXXB1dQVg2LBhABQWFjJixAgARo4cWWcMf39/APbu3UtRURGrV6+mtraWnj170r17d/r168fs2bMZN24cwcHBODs7X9TWGD8/P0wmE+7u7gwYMABHR0fc3NzIycm5aNsbb7wRgF69elFaWtrk8efl5TF79mwAhgwZwsGDB5vs05DCwkLGjRsHwE033cQ///lPvvnmG44ePcqMGTOAcytKR48evewFz6BBgy7r/jqS/Px85WMQZW8cZW8cZW8cZW8cZW+c+rLPzs5u0RgdvuBJSUnB09OTpUuXkpubS3R0NA4O/701yWKxWL+ebz979mydMZycnKxfV6xYgYeHR53P16xZw759+zCbzaSlpfHaa6/V29aQTp061fv9+bldyNHRsdHPf85kMtXZ7ufH1hzV1dXW/f08IycnJ/z8/EhOTm7xuCIiIiIiRuvwDy0oLi6mb9++AGRmZtKtWzdKS0spKSmhurrauori4+NDXl4egPXelZ8LCAggMzMTgF27drFt2zaOHDnCunXrGDx4MFFRUZw6dareNqMMGTLEejyff/45vr6+wLlCqLa2ts62F7aZTCZ++uknfvrpJ+syYX0Z+fj4UFhYaH3YwUsvvcQPP/zQ9gcmIiIiImIDHX6FZ9KkSURFRZGRkcGUKVMwm81EREQwdepUvL29rQVAcHAwERERTJs2rcHLsSIjI4mJiSE9PR2TyURCQgIeHh7s3buX7du34+TkxD333FNvm1HCw8OJiYkhPDwci8VifQT1yJEjefDBB0lISLBuO3LkSObOnUtiYiKTJ0/mvvvuo3///gwePNg61mOPPcb777/P9ddfD8BVV11FTEwMM2fOxNnZmRtuuOGiFbDz9K4cEREREWlvTJbmXDcl0gQjHmQg5+i6YuMoe+Moe+Moe+Moe+Moe+M0dA9PS/7u7PArPO1FXFwchYWFF7UnJSXh4uLSqjGPHj1KVFTURe0jRoxg7ty5rRpTRERERORKooLHRuLi4mw+ppeXF+vXr7f5uCIiIiIiV4oO/9ACERERERGRhqjgERERERERu6WCR0RERERE7JYKHhERERERsVsqeERERERExG7pKW1iM/2i0202ll5iKiIiIiK2oBWeK9SSJUtITU1t9va7d+/m5ptv5sMPP2zDWYmIiIiI2JYKHmnSoUOHeP311xk2bJjRUxERERERaRFd0manysrKmD9/PmfOnKGiooLY2FiKiopYs2YNnp6euLi44OvrS2pqKh9//DHHjh3jxRdfxNPT86Kx3N3dWbVqFQsXLjTgSEREREREWk8Fj506fvw4oaGhBAUFsWvXLpKSksjNzeWtt97immuuISQkxLrtd999x+bNmzGZTPWOddVVV12uaVvl5+df9n12VBUVFcrLIMreOMreOMreOMreOMreOLbIXgWPnXJzcyMxMZHk5GSqqqqorKykS5cuuLq6AtS5PG3IkCENFjtGGTRokNFT6DDy8/OVl0GUvXGUvXGUvXGUvXGUvXHqyz47O7tFY+geHjuVkpKCp6cnmzZtIi4uDovFgoPDf3/dFovF+r2Tk5MRUxQRERERaXMqeOxUcXExffv2BSAzM5Nu3bpRWlpKSUkJ1dXV5OTkGDxDEREREZG2p0va7NSkSZOIiooiIyODKVOmYDabiYiIYOrUqXh7e+Pr69vssXbu3ElycjL/+c9/2LdvH+vXr+e11167aDu9O0dERERE2hsVPHbK39+fd9991/rz7bffDkBoaGiLxxo9ejSjR4+21dRERERERC4bFTxiFRkZyenTp+u0de3aldWrVxs0IxERERGRS6OCR6xWrVpl9BRERERERGxKDy0QERERERG7pYJHRERERETslgoeERERERGxWyp4RERERETEbnXIhxYsWbIEX19fQkJC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iIiIiIjYLRU8IiIiIiJit1TwiIiIiIiI3VLBIyIiIiIidktPaROb6RedbpNxDjx3l03GERERERFRwWNjR44cYeLEifj5+WGxWKiqqmLmzJmMHTuWTz75hJUrV2KxWKisrOS+++6zvlfn+++/JzY2lp9++omKigp8fX35y1/+wrp16/joo48oKSnhhx9+wNfXF4Dk5GTGjRtHr169cHR0tO7/j3/8I3369KkzB0dHRx555BFuvvnmBuedlZXFo48+ah2/traWxYsX88tf/pK7776b//3f/6V///4AfPHFFzzzzDNs2bIFk8nUVlGKiIiIiFwyFTxtwMfHx/oenVOnTnH33Xdzww03sHjxYpKTk/H29qaqqor58+fj5OREaGgoK1asICQkhPHjxwPw1FNP8c9//pOHHnqIhx56iKysLDZs2MBLL71UZ19JSUl06dKlTtuRI0fqzOHQoUM88sgjLF++nIEDBzY475EjR1rHf/vtt0lJSWHRokU8/vjjLF26lL/+9a8APP/880RHR6vYEREREZF2T/fwtLHu3bvj7u7O0qVLCQsLw9vbGwBnZ2cWLFjAunXrACgpKaGsrMzab9GiRdx+++02mUPfvn155JFH2LhxY7P7nDhxAg8PDwBuu+02Kioq2L17N5mZmXh4eDBs2DCbzE1EREREpC1phaeNHTlyhFOnTtGjRw9uuOGGOp95eXlRXFzM2bNnmTlzJn/84x9JTU1l1KhRTJw4kV/+8pc2m4efnx+bN29udJvdu3cTFhZGeXk5Z86csa4QAURHR/PUU09RVVXFyy+/bLN51Sc/P79Nx7c3FRUVyswgyt44yt44yt44yt44yt44tsheBU8bKCoqIiwsDIvFQufOnVmyZAlr1qyhtra23u1NJhO//vWv2bFjB5988gkff/wx9957Ly+++CK33npro/uaOXNmnXt4kpKS6t2uvLy8znb1ufCStj179vDYY4+xYcMGAAYOHEi/fv3o0aOHdZWqrQwaNKhNx7c3+fn5yswgyt44yt44yt44yt44yt449WWfnZ3dojFU8LSBC++fOe+6664jLy+PG2+80dr27bff4u7ujslkoqKigquuuoqgoCCCgoIYOnQo6enpTRY89d3DU5+8vLwW/Yc6YsQIDhw4QG1trbVQ6tOnDz169Gj2GCIiIiIiRtM9PJfJ5MmT2bBhA4cOHQKgurqa5557jmnTpnH27FkmTpzIN998Y93++++/p3fv3jbZ96FDh1i7di2///3vW9SnW7duTa4KiYiIiIi0Z1rhuUy8vLxYtmwZTzzxhPVx1b/73e8IDg4G4IUXXiAuLs66fe/evXnqqaeaHPfnl7RNmDCBUaNGWS+rq6qqora2lqeeegovL69Gxzp/Dw+cK8ieeeaZFh2j3p8jIiIiIu2NyWKxWIyehHR82dnZDB8+3OhpXJF0XbFxlL1xlL1xlL1xlL1xlL1xGrqHpyV/d2qF5woTGRnJ6dOn67R17dqV1atXGzQjEREREZG2o4LnCrNq1SqjpyAiIiIictnooQUiIiIiImK3VPCIiIiIiIjdUsEjIiIiIiJ2SwWPiIiIiIjYLT20QGymX3T6JY+hd/mIiIiIiC3Z7QrPkiVLSE1NrdNWXl7OmDFjDJpRXcePH2/Wi0V/LiwsjK+//rpFfVJTU3n//fcByMjIaHa/+jIUEREREelI7Lbgae/c3d1ZtGjRZdlXSEgIY8eOpaqqirVr116WfYqIiIiItAcd9pK2srIy5s+fz5kzZ6ioqCA2NpaioiLWrFmDp6cnLi42sAgaAAAWbUlEQVQu+Pr6UlZWxpw5c6isrKzzRtY77riDwMBAXF1dCQkJYeHChVRXV+Po6Eh8fDxeXl7Ex8eTl5dHbW0tkydPJiQkpN62+qSmprJnzx6Ki4spKChg3rx5mM1mCgsLWbZsGa6ursydO5fU1FTGjh3L/fffz4cffkhVVRWvv/46Xbt2bfT4S0tLiY6OpqSkhJqaGp588kkGDx7Mq6++Snp6On369KGmpoY//OEP7N69mx49elBYWMj+/fuJi4vD39+fgoICoqKiKC8vZ+LEiXzwwQekpaVdlGFtbS2xsbEcPnyYmpoa5s6dy80332zT36eIiIiISFvosCs8x48fJzQ0lPXr1/P444+TlJTEiy++yNq1a1m9ejUHDx4EIC0tDV9fXzZu3MigQYOs/WtqaggMDGT27NmsWLGC6dOnk5KSwrRp00hMTOTUqVPs3LmTzZs3s3HjRmpqaupta8yBAwdYvXo1Dz/8MK+88govv/wys2bNwmw219mutraW6667jg0bNtC7d28+/fTTJo8/JSWFgIAA1q9fT0xMDAkJCZw6dYoNGzawZcsW4uLi2L17d50+M2bMwMfHh7i4uHrHtFgs9Wa4bds23N3dWb9+PS+//DLPPvtsk/MTEREREWkPOuwKj5ubG4mJiSQnJ1NVVUVlZSVdunTB1dUVgGHDhgFQWFjIiBEjABg5cmSdMfz9/QHYu3cvRUVFrF69mtraWnr27En37t3p168fs2fPZty4cQQHB+Ps7HxRW2P8/PwwmUy4u7szYMAAHB0dcXNzIycn56Jtb7zxRgB69epFaWlpk8efl5fH7NmzARgyZAgHDx7k0KFDXH/99bi4uODi4mI9vuYqLi6uN8O9e/eSnZ1tnXdlZSVVVVU4Ozu3aPzmyM/Pt/mY9q6iokK5GUTZG0fZG0fZG0fZG0fZG8cW2XfYgiclJQVPT0+WLl1Kbm4u0dHRODj8d8HKYrFYv55vP3v2bJ0xnJycrF9XrFiBh4dHnc/XrFnDvn37MJvNpKWl8dprr9Xb1pBOnTrV+/35uV3I0dGx0c9/zmQy1dnu7NmzdY71/DaN9T/vwpWq+jJ0cnLikUceYcKECU3O61JduAonzZOfn6/cDKLsjaPsjaPsjaPsjaPsjVNf9tnZ2S0ao8Ne0lZcXEzfvn0ByMzMpFu3bpSWllJSUkJ1dbV1NcLHx4e8vDwAsrKy6h0rICCAzMxMAHbt2sW2bds4cuQI69atY/DgwURFRXHq1Kl624wyZMgQ6/F8/vnn+Pr64u3tTUFBAdXV1fz444/W4z7PwcGB2tpaALp27cqxY8eA/5403bt3rzfDgIAAduzYAcDJkydZvnz5ZTlGEREREZFL1WFXeCZNmkRUVBQZGRlMmTIFs9lMREQEU6dOxdvbG19fXwCCg4OJiIhg2rRpdR5acKHIyEhiYmJIT0/HZDKRkJCAh4cHe/fuZfv27Tg5OXHPPffU22aU8PBwYmJiCA8Px2Kx8NRTT+Hm5saECRMIDQ2lf//++Pv711k5cnd3p7q6mrlz5/Lss8+yevVqwsLC+M1vfoPJZMLBwYHIyMiLMhw/fjyffvopDzzwALW1tURGRhp12CIiIiIiLWKyNOf6KekwUlNTmTBhAp06dWLixIkkJyfTq1evNt9vdnZ2gwWltC0tsxtH2RtH2RtH2RtH2RtH2RunoUvaWvJ3Z4dd4Wkv4uLiKCwsvKg9KSkJFxeXVo159OhRoqKiLmofMWIEc+fObbTviRMnuO+++3B2dmbixImXpdgREREREWmvVPBcooYe8XwpvLy8WL9+fav6zpo1i1mzZtl4RiIiIiIiHVOHfWiBiIiIiIhIU1TwiIiIiIiI3VLBIyIiIiIidksFj4iIiIiI2C0VPCIiIiIiYrf0lDaxmX7R6ZfU/8Bzd9loJiIiIiIi56jg+ZklS5bg6+tLSEiIta28vJyJEyfywQcfXLT9u+++S0xMDFu2bOH666+/nFO9SFhYGGfOnOHqq6/GYrFgMpl4+umn+dWvfsXKlSvZtm0bnp6e1u2HDBnCn//850b7nTdjxgw6d+5MYmKiEYcmIiIiItIqKnguwe7du/n4448ZMGCA0VOxSkhIsBZeWVlZLF68mJSUFADCw8OZOnVqi/udPHmSwsJCKioqKC0tpVu3bpfhSERERERELt0VV/CUlZUxf/58zpw5Q0VFBbGxsRQVFbFmzRo8PT1xcXHB19eXsrIy5syZQ2VlJcOHD7f2v+OOOwgMDMTV1ZWwsDBGjhxJWFhYk/tNTU1lz549FBcXU1BQwLx58zCbzRQWFrJs2TICAgJISEjgyy+/pLKyksmTJxMaGsof/vAH5s2bh7+/P9OnTycyMpJhw4Y161gDAgI4ePBgizP6eb/t27dz2223UVJSwnvvvcc999zT4jFFRERERIxwxRU8x48fJzQ0lKCgIHbt2kVSUhK5ubm89dZbXHPNNdZL2dLS0vD19SUmJobt27eTnn7u/pSamhoCAwMJDAxs8b4PHDjAxo0b2bp1K6+88gpvv/02qampmM1mBg4ciLe3NwsWLKCiooKgoCBCQ0OJjY1l0aJFhIeH4+3t3exiByAjI4MbbrihxfP8eT+z2cwTTzxBaWkpf/vb39qs4MnPz2+Tce1dRUWFsjOIsjeOsjeOsjeOsjeOsjeOLbK/4goeNzc3EhMTSU5OpqqqisrKSrp06YKrqyuAtaAoLCxkxIgRAIwcObLOGP7+/q3at5+fHyaTCXd3dwYMGICjoyNubm7k5OTQuXNnTp8+zQMPPICTkxPFxcUAXHfddfz6178mISGBN998s8l9LFiwgKuvvppjx47Ru3dvEhISrJ+tW7eOf/zjH9afw8PDGTt2bKP9Dh8+zA8//MDw4cOpqanhySef5Mcff6Rnz56tyqAxgwYNsvmYV4L8/HxlZxBlbxxlbxxlbxxlbxxlb5z6ss/Ozm7RGFdcwZOSkoKnpydLly4lNzeX6OhoHBz++3Rui8Vi/Xq+/ezZs3XGcHJyatW+O3XqVO/3FouF3bt38+mnn7J+/XqcnJwYOnSo9fMTJ07g5ORESUkJ1157baP7OH8vzocffsgbb7yBh4eH9bPm3MPz835ms5nKykqCg4OBcytc7777LlOmTGl5ACIiIiIil9kV9x6e4uJi+vbtC0BmZibdunWjtLSUkpISqqurycnJAcDHx4e8vDzg3E38l2NevXr1wsnJiR07dlBbW0tVVRU5OTmUlpaSkJDA4sWLmz3ebbfdRlVVFTt37mzRPH7eLz09nbVr15KWlkZaWhqrVq2yXt4nIiIiItLeXXErPJMmTSIqKoqMjAymTJmC2WwmIiKCqVOn4u3tja+vLwDBwcFEREQwbdq0Og8tuNDWrVt55513yM/PZ8GCBfTv35/nn3++VfO65ZZbSEpKYurUqQQFBTF69Gji4uIoKChg+fLl9OnTh+7du/Puu+8yfvz4Zo25YMECIiIiuPnmm4GLL2m79tprWbVqVYP9evXqhbOzc52n0N14442cPHmS7777jl/84hd1+uk9OiIiIiLS3pgs56/hErkE2dnZDRaG0rZ0XbFxlL1xlL1xlL1xlL1xlL1xGrqHpyV/d15xKzxtLS4ujsLCwovak5KScHFxueTxd+zYwdq1ay9qv/ABBCIiIiIico4KHhuLi4tr0/Fvv/12br/99jbdh4iIiIiIvbjiHlogIiIiIiJXDhU8IiIiIiJit1TwiIiIiIiI3VLBIyIiIiIidksPLRCb6Rfd+heS6h0+IiIiItIW7HaFZ8mSJaSmptZpKy8vZ8yYMQbNyPZuuummRj/PyMgA4OOPP2bjxo112prjb3/7GytXrmz9BEVEREREDGa3Bc+Vrqqqyvq+nsDAQB588EEAXn31VQNnJSIiIiJyeXXYS9rKysqYP38+Z86coaKigtjYWIqKilizZg2enp64uLjg6+tLWVkZc+bMobKyss4bWe+44w4CAwNxdXUlJCSEhQsXUl1djaOjI/Hx8Xh5eREfH09eXh61tbVMnjyZkJCQetvqk5qayp49eyguLqagoIB58+ZhNpspLCxk2bJlBAQEkJCQwJdffkllZSWTJ08mNDSUP/zhD8ybNw9/f3+mT59OZGQkw4YNazSL/fv3s2jRIhwcHOjSpQvPPfccK1asYP/+/cTFxeHv709BQQGurq7s37+fyMhIwsLC2LBhAy+99BJwbrUoKyuLXbt28eyzz+Lm5oa7uzt9+vQB4MUXX+Szzz6jtraWqVOnMmHCBBv9JkVERERE2k6HLXiOHz9OaGgoQUFB7Nq1i6SkJHJzc3nrrbe45pprrIVIWloavr6+xMTEsH37dtLTz91nUlNTQ2BgIIGBgcTExDB9+nRuueUWPvroIxITE/nTn/7Ezp07yczMpLq6mr///e+cOnXqorbGHDhwgI0bN7J161ZeeeUV3n77bVJTUzGbzQwcOBBvb28WLFhARUUFQUFBhIaGEhsby6JFiwgPD8fb27vJYgfgmWee4c9//jMBAQEkJyezbt06ZsyYwRdffEFcXJz10r6HHnqIpKQkVq1aRVZWVr1jvfDCCyxdupSBAwcyc+ZM+vTpw2effca3337Lhg0bqKqq4u677yYoKAgXF5eW/MoalZ+fb7OxrjQVFRXKzyDK3jjK3jjK3jjK3jjK3ji2yL7DFjxubm4kJiaSnJxMVVUVlZWVdOnSBVdXVwBroVBYWMiIESMAGDlyZJ0x/P39Adi7dy9FRUWsXr2a2tpaevbsSffu3enXrx+zZ89m3LhxBAcH4+zsfFFbY/z8/DCZTLi7uzNgwAAcHR1xc3MjJyeHzp07c/r0aR544AGcnJwoLi4G4LrrruPXv/41CQkJvPnmm83KorCwkICAAODcSs2qVasaXHlqyrfffsvAgQMBGDFiBJWVleTk5PDFF18QFhYGwNmzZzl+/Lh19ccWBg0aZLOxrjT5+fnKzyDK3jjK3jjK3jjK3jjK3jj1ZZ+dnd2iMTpswZOSkoKnpydLly4lNzeX6OhoHBz+e0uSxWKxfj3ffvbs2TpjODk5Wb+uWLECDw+POp+vWbOGffv2YTabSUtL47XXXqu3rSGdOnWq93uLxcLu3bv59NNPWb9+PU5OTgwdOtT6+YkTJ3BycqKkpIRrr722RblUV1fXyaEhJpOpzs81NTUA9Wbo7OzMvffey8MPP9yiuYiIiIiIGK3DPrSguLiYvn37ApCZmUm3bt0oLS2lpKSE6upqcnJyAPDx8SEvLw+gwcu4AgICyMzMBGDXrl1s27aNI0eOsG7dOgYPHkxUVBSnTp2qt+1S5t+rVy+cnJzYsWMHtbW1VFVVkZOTQ2lpKQkJCSxevLhZY/n6+rJ3714A9uzZg5+fHw4ODtTW1l607fkipmvXrhw7dgyAf//735SXlwPg6enJf/7zH2tRBudWwj788EPOnj1LZWVls+clIiIiImK0DrvCM2nSJKKiosjIyGDKlCmYzWYiIiKYOnUq3t7e+Pr6AhAcHExERATTpk2r89CCC0VGRhITE0N6ejomk4mEhAQ8PDzYu3cv27dvx8nJiXvuuafetta65ZZbSEpKYurUqQQFBTF69Gji4uIoKChg+fLl9OnTh+7du/Puu+8yfvz4Rsd68skn+ctf/oLJZOLaa68lISGBzp07U11dzdy5cxk9erR120GDBnHvvffyxhtvcPXVV/PAAw8wdOhQvL29AXjsscd49NFH8fLyolevXsC5ywNvuukm7r//fiwWi/WJbz+nd+mIiIiISHtjspz/J3+RS5Cdnd1gQSltS9cVG0fZG0fZG0fZG0fZG0fZG6ehe3ha8ndnh13haS/i4uIoLCy8qD0pKckmTzHbsWOH9X06FwoPD2fs2LGXPL6IiIiIiD1TwXOJ4uLi2nT822+/ndtvv71N9yEiIiIiYq90SZvYREsfDygiIiIi0lotuaRNBY+IiIiIiNitDvtYahERERERkaao4BEREREREbulhxZIszz77LN88cUXmEwmYmJi8Pf3t372f//3fyxfvhxHR0cCAwOJiIhoso80X0uzz8rK4tFHH7W+i+r6668nNjbWqOl3aI1lX1lZyVNPPUVBQQGpqanN6iPN19Lsdd7bTmPZf/rppyxfvhwHBwd8fHx45plncHBw0HlvIy3Nfs+ePTrvbaSx7N944w3efPNNHBwcGDhwIE8//TQmk0nnvY20NPvdu3e3/Ly3iDQhKyvLMmvWLIvFYrF88803lvvuu6/O5+PHj7ccPXrUUltba5k8ebKloKCgyT7SPK3J/tNPP7XMmTPHiOnalaayX7RokeX111+33H333c3uI83Tmux13ttGU9mPHTvW8t1331ksFotlzpw5lp07d+q8t5HWZK/z3jYay/7MmTOW8PBwS1VVlcVisVjCwsIs2dnZOu9tpDXZt+a81yVt0qRdu3YRFBQEQP/+/Tl9+jRlZWUAHD58mGuvvZZf/OIXODg48Jvf/IZdu3Y12kearzXZi200dQ7PmzfP+nlz+0jztCZ7sY2msk9NTaVXr14A9OzZk+LiYp33NtKa7MU2Gsv+qquuIiUlBScnJ3766SfKyspwd3fXeW8jrcm+NVTwSJNOnDhBjx49rD/37NmT48ePA3D8+HF69ux50WeN9ZHma032AN988w2PPPIIkydP5pNPPrm8k7YTTZ3DXbt2bXEfaZ7WZA86722hudkfO3aMTz75hN/85jc6722kNdmDzntbaM45/OqrrzJ27FjGjRtHnz59dN7bSGuyh5af97qHR1rM0oonmbemj1ysOTn269ePyMhIxo8fz+HDhwkPD+e9997D2dn5MszQfum8N47Oe+PUl/3Jkyd55JFHePrpp+v8odJYH2m55mSv875t1Jf9rFmzCA8PZ+bMmfW+/0XnvW00J/vWnPda4ZEmeXh4cOLECevPx44dsy4p/vyzH374AQ8Pj0b7SPO1JntPT0/uvPNOTCYTffv2xc3NjR9++OGyz72ja805rPPeNlqTo85722gq+7KyMmbOnMljjz3Grbfe2qw+0jytyV7nvW00lv2pU6fYs2cPAC4uLgQGBpKTk6Pz3kZak31rznsVPNKkUaNG8Y9//AOAffv24eHhYV1a7927N2VlZRw5coSamho+/PBDRo0a1Wgfab7WZP/OO++QnJwMnLvs7eTJk3h6ehp2DB1Va85hnfe20Zocdd7bRlPZP/fcc0ybNo3AwMBm95HmaU32Ou9to7Hsa2pqiI6Opry8HIDc3Fx8fHx03ttIa7JvzXlvsmgNTpph2bJlfPbZZ5hMJp5++mm++uorunXrxtixY9mzZw/Lli0D4I477mDGjBn19hk4cKCRh9BhtTT7srIy/vSnP1FSUkJ1dTWRkZHWa72lZRrLfu7cuXz//fcUFBTg5+fHfffdx8SJE3Xe20hLs7/tttt03ttIQ9nfeuutjBgxgqFDh1q3nTBhAvfff7/OextpafZ33XWXznsbaez/OampqWzYsIFOnToxYMAA/vKXv2AymXTe20hLsy8vL2/xea+CR0RERERE7JYuaRMREREREbulgkdEREREROyWCh4REREREbFbKnhERERERMRuqeARERERERG7pYJHRERERETslgoeERERERGxWyp4RERERETEbv1/204WPWZk+DwAAAAASUVORK5CYII=\n","text/plain":["<Figure size 864x432 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"-W-TErDuOyo4"},"source":["xg_preds = np.expm1(xgb_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = xg_preds\n","sol_fl.to_csv(\"group_xg.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"0UmmtuJjPSx3"},"source":["## Ensembling"]},{"cell_type":"code","metadata":{"id":"uANdwhF3PU1N","executionInfo":{"status":"ok","timestamp":1603354859684,"user_tz":-330,"elapsed":1643,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"6d0dd1f0-fe2b-430a-d086-a2cc87ac94f1","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["av_metrices(np.log1p(train[TARGET_COL]), lgb_oofs*0.20 + cb_oofs*0.20 + xgb_oofs*0.60)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0.281520694504691"]},"metadata":{"tags":[]},"execution_count":129}]},{"cell_type":"code","metadata":{"id":"p2GrWKtTPoAQ"},"source":["train_new = train[[TARGET_COL]]\n","train_new[TARGET_COL] = np.log1p(train_new[TARGET_COL])\n","\n","test_new = pd.DataFrame()\n","\n","train_new['lgb'] = lgb_oofs\n","test_new['lgb'] = lgb_preds\n","\n","train_new['cb'] = cb_oofs\n","test_new['cb'] = cb_preds\n","\n","train_new['xgb'] = xgb_oofs\n","test_new['xgb'] = xgb_preds\n","\n","features = [c for c in train_new.columns if c not in [TARGET_COL]]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"48GGOQ9_QQiB","executionInfo":{"status":"ok","timestamp":1603354869688,"user_tz":-330,"elapsed":1989,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"448358a0-0d58-406c-b088-cd190014dfab","colab":{"base_uri":"https://localhost:8080/","height":408}},"source":["clf = LinearRegression()\n","\n","ens_oofs, ens_preds = clf_run(clf, train_new, test_new, features)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["\n","------------- Fold 1 -------------\n","\n","AV metric score for validation set is 0.2683504856659577\n","\n","------------- Fold 2 -------------\n","\n","AV metric score for validation set is 0.2830773259344496\n","\n","------------- Fold 3 -------------\n","\n","AV metric score for validation set is 0.27972972722714934\n","\n","------------- Fold 4 -------------\n","\n","AV metric score for validation set is 0.27490722816814334\n","\n","------------- Fold 5 -------------\n","\n","AV metric score for validation set is 0.29931518222577574\n","\n","\n","AV metric for oofs is 0.28126707344641916\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"yAcoDGE9Qy0B"},"source":["pred = np.expm1(ens_preds)\n","sol_fl = pd.DataFrame()\n","sol_fl[TARGET_COL] = pred\n","sol_fl.to_csv(\"new_f.csv\", index=False)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"98BLputQua5C"},"source":[""],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"c6IakgHPua97","executionInfo":{"status":"ok","timestamp":1603561839745,"user_tz":-330,"elapsed":1948,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"48422190-e957-42e8-da7f-c3f2052ba324","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["len(set(zip(test['LONGITUDE'], test['LATITUDE'])))"],"execution_count":23,"outputs":[{"output_type":"execute_result","data":{"text/plain":["5962"]},"metadata":{"tags":[]},"execution_count":23}]},{"cell_type":"code","metadata":{"id":"lfB5cXWMbJec","executionInfo":{"status":"ok","timestamp":1603561372945,"user_tz":-330,"elapsed":1475,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"aede1621-3517-4f94-ff33-b4225989894b","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["3189, train=4116, test=5962"],"execution_count":17,"outputs":[{"output_type":"execute_result","data":{"text/plain":["4078"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"code","metadata":{"id":"3nc6-WJNbJaF","executionInfo":{"status":"error","timestamp":1603561911757,"user_tz":-330,"elapsed":1524,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"949782ea-dfd4-4e4e-e531-ff38a114cd32","colab":{"base_uri":"https://localhost:8080/","height":129}},"source":["k = 0\n","for c,d in set(zip(test['LONGITUDE'], test['LATITUDE'])):\n","  if c and d in set(zip(train['LONGITUDE'], train['LATITUDE'])):\n","    k += 1"],"execution_count":24,"outputs":[{"output_type":"error","ename":"SyntaxError","evalue":"ignored","traceback":["\u001b[0;36m  File \u001b[0;32m\"<ipython-input-24-080189f4550c>\"\u001b[0;36m, line \u001b[0;32m3\u001b[0m\n\u001b[0;31m    if c,d in set(zip(train['LONGITUDE'], train['LATITUDE'])):\u001b[0m\n\u001b[0m        ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"]}]},{"cell_type":"code","metadata":{"id":"uoEYf7RatYr9","executionInfo":{"status":"ok","timestamp":1603561722685,"user_tz":-330,"elapsed":1742,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"5ccd55c3-4d02-4ed2-caf4-324446f5cb9f","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["k"],"execution_count":21,"outputs":[{"output_type":"execute_result","data":{"text/plain":["3193"]},"metadata":{"tags":[]},"execution_count":21}]},{"cell_type":"code","metadata":{"id":"OBVh-TicbJXA","executionInfo":{"status":"ok","timestamp":1603560833910,"user_tz":-330,"elapsed":7768,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"ca85602a-e430-4c9b-a824-e83d27275de6","colab":{"base_uri":"https://localhost:8080/","height":241}},"source":["!pip install reverse_geocoder"],"execution_count":4,"outputs":[{"output_type":"stream","text":["Collecting reverse_geocoder\n","\u001b[?25l  Downloading https://files.pythonhosted.org/packages/0b/0f/b7d5d4b36553731f11983e19e1813a1059ad0732c5162c01b3220c927d31/reverse_geocoder-1.5.1.tar.gz (2.2MB)\n","\u001b[K     |████████████████████████████████| 2.3MB 2.7MB/s \n","\u001b[?25hRequirement already satisfied: numpy>=1.11.0 in /usr/local/lib/python3.6/dist-packages (from reverse_geocoder) (1.18.5)\n","Requirement already satisfied: scipy>=0.17.1 in /usr/local/lib/python3.6/dist-packages (from reverse_geocoder) (1.4.1)\n","Building wheels for collected packages: reverse-geocoder\n","  Building wheel for reverse-geocoder (setup.py) ... \u001b[?25l\u001b[?25hdone\n","  Created wheel for reverse-geocoder: filename=reverse_geocoder-1.5.1-cp36-none-any.whl size=2268090 sha256=94f09e6dfac2433b04d591f8964844bcae11580983efb09afb9cfccc6df62911\n","  Stored in directory: /root/.cache/pip/wheels/47/05/50/b1350ff094ef91e082665b4a2f9ca551f8acea4aa55d796b26\n","Successfully built reverse-geocoder\n","Installing collected packages: reverse-geocoder\n","Successfully installed reverse-geocoder-1.5.1\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"shpiAwNdelRs","executionInfo":{"status":"ok","timestamp":1603560902327,"user_tz":-330,"elapsed":1965,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"19df406f-e5d9-444c-9c06-2da3bb5e114a","colab":{"base_uri":"https://localhost:8080/","height":165}},"source":["train.head(2)"],"execution_count":5,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>POSTED_BY</th>\n","      <th>UNDER_CONSTRUCTION</th>\n","      <th>RERA</th>\n","      <th>BHK_NO.</th>\n","      <th>BHK_OR_RK</th>\n","      <th>SQUARE_FT</th>\n","      <th>READY_TO_MOVE</th>\n","      <th>RESALE</th>\n","      <th>ADDRESS</th>\n","      <th>LONGITUDE</th>\n","      <th>LATITUDE</th>\n","      <th>TARGET(PRICE_IN_LACS)</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>Owner</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>BHK</td>\n","      <td>1300.236407</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Ksfc Layout,Bangalore</td>\n","      <td>12.969910</td>\n","      <td>77.597960</td>\n","      <td>55.0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>Dealer</td>\n","      <td>0</td>\n","      <td>0</td>\n","      <td>2</td>\n","      <td>BHK</td>\n","      <td>1275.000000</td>\n","      <td>1</td>\n","      <td>1</td>\n","      <td>Vishweshwara Nagar,Mysore</td>\n","      <td>12.274538</td>\n","      <td>76.644605</td>\n","      <td>51.0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["  POSTED_BY  UNDER_CONSTRUCTION  ...   LATITUDE  TARGET(PRICE_IN_LACS)\n","0     Owner                   0  ...  77.597960                   55.0\n","1    Dealer                   0  ...  76.644605                   51.0\n","\n","[2 rows x 12 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"code","metadata":{"id":"msiES-KPbJUc","executionInfo":{"status":"ok","timestamp":1603564009777,"user_tz":-330,"elapsed":672640,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}}},"source":["import reverse_geocoder as rg \n","city_name = []\n","admin1 = []\n","admin2 = []\n","cc = []\n","\n","for idx,idy in set(zip(train['LONGITUDE'], train['LATITUDE'])):\n","  coordinates =(idx, idy)\n","  result = (rg.search(coordinates))\n","  city_name.append(dict(result[0])['name'])\n","  admin1.append(dict(result[0])['admin1'])\n","  admin2.append(dict(result[0])['admin2'])\n","  cc.append(dict(result[0])['cc'])"],"execution_count":28,"outputs":[]},{"cell_type":"code","metadata":{"id":"2UnjZ3gMbJR8","executionInfo":{"status":"ok","timestamp":1603564063006,"user_tz":-330,"elapsed":1408,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"3d48407d-1385-40a2-f815-6f8eb7aa91ed","colab":{"base_uri":"https://localhost:8080/","height":419}},"source":["lat_log_df = pd.DataFrame({'city_name':city_name, 'admin1':admin1, 'admin2':admin2, 'cc':cc})\n","lat_log_df"],"execution_count":29,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>city_name</th>\n","      <th>admin1</th>\n","      <th>admin2</th>\n","      <th>cc</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>Karwar</td>\n","      <td>Karnataka</td>\n","      <td>Uttar Kannada</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>Hubli</td>\n","      <td>Karnataka</td>\n","      <td>Dharwad</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>Valpoy</td>\n","      <td>Goa</td>\n","      <td>North Goa</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>Hubli</td>\n","      <td>Karnataka</td>\n","      <td>Dharwad</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>Ponda</td>\n","      <td>Goa</td>\n","      <td>North Goa</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>4111</th>\n","      <td>Akola</td>\n","      <td>Maharashtra</td>\n","      <td>Akola</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>4112</th>\n","      <td>Vadodara</td>\n","      <td>Gujarat</td>\n","      <td>Vadodara</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>4113</th>\n","      <td>Aluva</td>\n","      <td>Kerala</td>\n","      <td>Ernakulam</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>4114</th>\n","      <td>Anjar</td>\n","      <td>Gujarat</td>\n","      <td>Kachchh</td>\n","      <td>IN</td>\n","    </tr>\n","    <tr>\n","      <th>4115</th>\n","      <td>Khamaria</td>\n","      <td>Madhya Pradesh</td>\n","      <td>Jabalpur</td>\n","      <td>IN</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>4116 rows × 4 columns</p>\n","</div>"],"text/plain":["     city_name          admin1         admin2  cc\n","0       Karwar       Karnataka  Uttar Kannada  IN\n","1        Hubli       Karnataka        Dharwad  IN\n","2       Valpoy             Goa      North Goa  IN\n","3        Hubli       Karnataka        Dharwad  IN\n","4        Ponda             Goa      North Goa  IN\n","...        ...             ...            ...  ..\n","4111     Akola     Maharashtra          Akola  IN\n","4112  Vadodara         Gujarat       Vadodara  IN\n","4113     Aluva          Kerala      Ernakulam  IN\n","4114     Anjar         Gujarat        Kachchh  IN\n","4115  Khamaria  Madhya Pradesh       Jabalpur  IN\n","\n","[4116 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":29}]},{"cell_type":"code","metadata":{"id":"G2tl5Y6w3im4","executionInfo":{"status":"ok","timestamp":1603564171303,"user_tz":-330,"elapsed":1912,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}}},"source":["lat = []\n","log = []\n","for idx,idy in set(zip(train['LONGITUDE'], train['LATITUDE'])):\n","  lat.append(idy)\n","  log.append(idx)"],"execution_count":30,"outputs":[]},{"cell_type":"code","metadata":{"id":"vUDoIokN33SS","executionInfo":{"status":"ok","timestamp":1603564236034,"user_tz":-330,"elapsed":1714,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}}},"source":["lat_log_df['LONGITUDE'] = log\n","lat_log_df['LATITUDE'] = lat"],"execution_count":31,"outputs":[]},{"cell_type":"code","metadata":{"id":"J-zDP80U6F0w","executionInfo":{"status":"ok","timestamp":1603564241413,"user_tz":-330,"elapsed":1020,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}}},"source":["lat_log_df.to_csv('set_train_city.csv', index=False)"],"execution_count":32,"outputs":[]},{"cell_type":"code","metadata":{"id":"WZkRKfDz6TiN","executionInfo":{"status":"ok","timestamp":1603178947798,"user_tz":-330,"elapsed":1478,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"975525c2-8ac4-4cb7-e7b0-adb26717b736","colab":{"base_uri":"https://localhost:8080/","height":102}},"source":["lat_log_df.nunique()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["city_name    962\n","admin1        69\n","admin2       388\n","cc            27\n","dtype: int64"]},"metadata":{"tags":[]},"execution_count":54}]},{"cell_type":"code","metadata":{"id":"BM-VO3asbJPa","executionInfo":{"status":"ok","timestamp":1603173762290,"user_tz":-330,"elapsed":1949,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"b3f08b1c-52f1-4e03-a968-3b496d00999e","colab":{"base_uri":"https://localhost:8080/","height":119}},"source":["coordinates = (train['LONGITUDE'][0], train['LATITUDE'][0]) \n","rg.search(coordinates)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[OrderedDict([('lat', '12.97194'),\n","              ('lon', '77.59369'),\n","              ('name', 'Bangalore'),\n","              ('admin1', 'Karnataka'),\n","              ('admin2', 'Bangalore Urban'),\n","              ('cc', 'IN')])]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"code","metadata":{"id":"3wSp6Brm7Jc7","executionInfo":{"status":"ok","timestamp":1603179268924,"user_tz":-330,"elapsed":1259,"user":{"displayName":"Shivkp","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjcodmiuhAdyhEvKfWS1UmmglMwYOb-cvywpkwh=s64","userId":"09987478781217827388"}},"outputId":"6a4586a7-8e98-4312-8661-c3de07b69b68","colab":{"base_uri":"https://localhost:8080/","height":34}},"source":["test.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(68720, 11)"]},"metadata":{"tags":[]},"execution_count":5}]}]}